spring是如何实现AOP的

来源:互联网 发布:文件从mac到u盘里 编辑:程序博客网 时间:2024/05/17 08:34
spring对AOP的支持


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


如何强制使用CGLIB生成代码?
* 加入CGLIB库,SPRING_HOME/lib/cglib/*.jar
* 加入如下配置,强制使用CGLIB代理
<aop:aspectj-autoproxy proxy-target-class="true"/>

JDK动态代理和CGLIB代理的区别?
* JDK动态代理对实现了接口的类进行代理
* CGLIB代理可以对类代理,主要对指定的类生成一个子类,因为是继承, 我们的目标最好不要使用final声明
原创粉丝点击