Spring的AOP与AspectJ是什么关系?
在实现AOP编程时,有用的动态代理,有用的cglib,然后有提到了AspectJ。
请问AspectJ与前二者是什么关系?
一般在实际开发时,推荐使用哪种?
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

评论(5)

引用来自“小小志”的评论
AspectJ是一个面向切面的框架,是事实上的aop的标准,spring aop中支持使用#FFFFFF;">AspectJ注解使用aop。如果你想在项目中使用333333;font-family:Verdana, sans-serif, 宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">AspectJ注解就需要加上333333;font-family:Verdana, sans-serif, 宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">AspectJ的包

AspectJ是一个面向切面的框架,是事实上的aop的标准,spring aop中支持使用#FFFFFF;">AspectJ注解使用aop。如果你想在项目中使用333333;font-family:Verdana, sans-serif, 宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">AspectJ注解就需要加上333333;font-family:Verdana, sans-serif, 宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">AspectJ的包

如果要实现代理类有对应的接口,Spring AOP 默认使用 JDK 自带的 InvocationHandler 来实现代理类。
如果没有对应的接口,Spring 使用 CGLib 来实现代理类。
AspectJ 是配置 AOP 的一种方式,和 Spring 自带的方式比较起来方便很多 http://www.mkyong.com/spring3/spring-aop-aspectj-in-xml-configuration-example/:
<!-- Aspect --> <bean id="logAspect" class="com.mkyong.aspect.LoggingAspect" /> <aop:config> <aop:aspect id="aspectLoggging" ref="logAspect" > <!-- @After --> <aop:pointcut id="pointCutAfter" expression="execution(* com.mkyong.customer.bo.CustomerBo.addCustomer(..))" /> <aop:after method="logAfter" pointcut-ref="pointCutAfter" /> </aop:aspect> </aop:config>
发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。