代理(Proxy)模式

代理(Proxy)模式

描述

给某一个对象提供一个代理,并由代理对象控制对原对象的引用,对象结构型模式。这种也是静态代理

cglib 动态代理

// 设置增强回调
public class MyMethodInterceptor implements MethodInterceptor {

    @Override
    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
        System.out.println("before");
        proxy.invokeSuper(obj, args);//执行被代理对象的原有方法
        System.out.println("after");
        return null;
    }
}
// 业务方法
public class LeiTikTok  {
    public void tiktokHaha() {
        System.out.println("雷丰阳,tiktok.... haha....");
    }
}
// 业务方法
public class CglibTest {
    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        //2、设置要增强哪个个类的功能。增强器为这个类动态创建一个子类
        enhancer.setSuperclass(LeiTikTok.class);
        //3、设置回调
        enhancer.setCallback(new MyMethodInterceptor());
        LeiTikTok o = (LeiTikTok) enhancer.create();
        o.tiktokHaha();
    }
}

Spring事务->联想Spring事务不生效的几种情况

你可能感兴趣的:(代理(Proxy)模式)