zoukankan      html  css  js  c++  java
  • Spring(六) Spring中的静态代理

    在Spring中代理有两种一种是静态代理一种是动态代理

    这篇博客想讲一下静态代理

    首先要知道什么是静态代理(查找了一下其他博客)

    了解一下静态代理满足的条件和他的弊端

    1、需要知道核心类(被代理类)是哪一个类,并且有什么方法。 

    2、非核心的代码需要重复写多次,显得代码的结构臃肿,形成代码冗余。

    3、非核心类(代理类)需要实现核心类(被代理类)实现的接口,也就是他们需要实现共同的接口,但是以核心类实现的接口(被代理类)为准。

    下面通过一个例子来说明

    先声明一个主题接口,接口的实现类有两个一个是真实主题,一个是代理主题

    在主题接口中有一个方法

    package demo07;
    /** * Created by mycom on 2018/3/6. */ public interface Subject { public void request(); }

    在实现类中要重写这个方法

    package demo07;
    
    /**
     * Created by mycom on 2018/3/6.
     */
    public class RealSubject implements Subject {
        public void request() {
            System.out.println("真实的主题对象");
        }
    }
    package demo07;
    
    /**
     * Created by mycom on 2018/3/6.
     */
    public class ProxySubject implements Subject {
        private RealSubject realSubject;
    
        public RealSubject getRealSubject() {
            return realSubject;
        }
    
        public void setRealSubject(RealSubject realSubject) {
            this.realSubject = realSubject;
        }
    
        public void request() {
            System.out.println("Before====");
            realSubject.request();
            System.out.println("After====");
        }
    }

    在测试类中

    //代理:静态代理和动态代理
        //静态代理
        @Test
        public void t2(){
            //创建一个真实的主题对象
            RealSubject realSubject=new RealSubject();
            //创建一个代理主题对象
            ProxySubject proxySubject=new ProxySubject();
            //将真实对象赋值给代理对象
            proxySubject.setRealSubject(realSubject);
            proxySubject.request();
        }

    运行的结果

    他执行的是代理对象

  • 相关阅读:
    linux 查看数据库和表
    使用Java实现发送email邮件
    kafka使用说明书
    关于hadoop各种项目中用到的maven依赖
    阿里云服务器快速搭建自己的个人网站
    CentOS7命令大全
    solr中文分词
    windows安装MySQL详细图解过程
    spark数据倾斜分析与解决方案
    浅谈KMlib(机器学习)
  • 原文地址:https://www.cnblogs.com/my-123/p/8521811.html
Copyright © 2011-2022 走看看