代理(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事务不生效的几种情况
网友评论