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();
    }

运行的结果

他执行的是代理对象

 

posted @ 2018-03-07 13:16  明渃筱曦  阅读(224)  评论(0编辑  收藏  举报