您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
05-aop简介-基于cglib的动态代理
发布时间:2025-01-15 20:27:44编辑:雪饮阅读()
-
首先要说的就是cglib本来应该是第三方包,那么好像是自从spring5开始就直接合并在spring5里面了,如果你在IntelliJ IDEA中spring项目是5的话,可以在External Libraries
Maven: org.springframework:spring-core:5.0.5.RELEASE看到
那么接下来建立目标
package sp21.proxy.cglib;
public class Target {
public void save() {
System.out.println("save running...");
}
}
然后建立增强
package sp21.proxy.cglib;
public class Advice {
public void before(){
System.out.println("前置增强....");
}
public void afterReturning(){
System.out.println("后置增强....");
}
}
然后增强的测试
package sp21.proxy.cglib;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class ProxyTest {
public static void main(String[] args) {
//目标对象
final Target target=new Target();
//增强对象
final Advice advice=new Advice();
//1、创建增强器
Enhancer enhancer=new Enhancer();
//2、设置父类(目标)
enhancer.setSuperclass(Target.class);
//3、设置回调
enhancer.setCallback(new MethodInterceptor(){
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
//前置增强
advice.before();
//执行目标方法
Object invoke=method.invoke(target,objects);
//后置增强
advice.afterReturning();
return invoke;
}
});
//4、创建代理对象
Target proxy=(Target) enhancer.create();
proxy.save();
}
}
关键字词:cglib
相关文章
-
无相关信息