我正在读一本书,其中谈到在Spring AOP中启用AspectJ支持。
以下是从书中摘录的一段:
要在Spring IoC容器中启用AspectJ注释支持,只需在bean配置文件中定义一个空的XML元素aop:aspectj-autoproxy。然后,Spring将为与AspectJ方面匹配的任何bean自动创建代理。
对于在应用程序设计中不可用或未使用接口的情况,可以依靠CGLIB创建代理。为了使CGLIB,你需要设置该属性proxy-target-class=true在<aop:aspectj-autoproxy />。
proxy-target-class=true
<aop:aspectj-autoproxy />
我无法得到第二段。什么是“ 接口不可用 ”。谁能用一个例子说明这一点?
Spring AOP使用JDK动态代理或CGLIB为目标对象创建代理。
根据Spring文档,如果你的目标实现了至少一个接口,则将使用JDK动态代理。但是,如果目标对象未实现任何接口,则将创建CGLIB代理。
这样可以强制创建CGLIB代理(设置proxy-target-class =“ true ”):
<aop:config proxy-target-class="true"> <!-- other beans defined here... --> </aop:config>
使用AspectJ及其自动支持时,你也可以强制使用CGLIB代理。这是使用的地方,<aop:aspectj-autoproxy>这里的“ proxy-target-class”也必须设置为true:
<aop:aspectj-autoproxy>
“ proxy-target-class”
<aop:aspectj-autoproxy proxy-target-class="true"/>