首页 > 编程知识 正文

spring AOP的两种代理,动态代理的两种方式

时间:2023-05-03 07:32:48 阅读:265385 作者:2784

1.JDK动态代理  2.cglib代理

1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换

注:JDK动态代理要比cglib代理执行速度快,但性能不如cglib好。所以在选择用哪种代理还是要看具体情况,一般单例模式用cglib比较好,具体原因请自行百度。

一 JDK动态代理实现(原理是使用反射机制)

首先定义接口,并实现     

public interface TestService { public int add();     } public class TestServiceImpl implements TestService {     @Override     public int add() {         System.out.println("开始执行add...");          return 0;     } }

定义代理类,这里要注意导入的包是import java.lang.reflect.*

   public class JDKDynamicProxy implements InvocationHandler {     //被代理的目标对象    private Object pro

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。