Spring静态代理

为什么需要静态代理

1.目地是将业务代码与日志代码完全分离,实现松散耦合.

2.代理对象与被代理对象必须实现同一接口,在代理对象中实现与日志记录的相关服务,并在需要的时候呼叫被代理对象,而被代理对象只保留业务代码.

下面做个小例子

创建Subject接口

package cn.happy.day05;

/**
 * Created by Administrator on 2018/3/6.
 */
//抽象代理
public interface Subject {
    public void print();
}

  

RealSubject类实现Subject

package cn.happy.day05;

/**
 * Created by Administrator on 2018/3/6.
 */
//真实主题
public class RealSubject implements Subject {

    public void print() {
        System.out.println("--------正在打印书本--------");
    }
}

  

ProxySubject类实现Subject

package cn.happy.day05;

/**
 * Created by Administrator on 2018/3/6.
 */
//代理主题
public class ProxySubject {
    private RealSubject realSubject=new RealSubject();
    public void print(){
        //加入检查功能   前置增强
        check();
        realSubject.print();
    }

    public void check(){
        System.out.println("----正在检查纸张是否合格------");
    }
}

  

书写测试类

 //静态代理
    @Test
    public void Proxy(){
        //真实主题
        RealSubject realSubject=new RealSubject();
        //代理主题
        ProxySubject proxySubject=new ProxySubject();
        proxySubject.print();
    }

结果

原文地址:https://www.cnblogs.com/xuchangqi1/p/8522170.html