aop的实现原理
Spring AOP有两种方式实现动态代理,如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 。如果目标对象没有实现了接口,必须用cglib实现aop
cglib和jdk动态代理的区别
jdk动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
cglib的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类和方法进行代理。
Spring AOP有两种方式实现动态代理,如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 。如果目标对象没有实现了接口,必须用cglib实现aop
jdk动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
cglib的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类和方法进行代理。