<Spring-Aspect> 切面类(@Aspect)首先必须是bean

[b]1. 问题描述[/b]
今天发现老工程里有个日志切面但是总是也没有执行过。

[b]2. 问题解决[/b]
1)怀疑是execution表达式问题,先后改动了AspectJ表达式也不生效。

2)在idea里打断点调试,tomcat启动后发现[color=red]断点红圈没有打勾[/color](这种情况就表示代码永远不会走进来)。

最后一看,这个被标注了@Aspect的切面类根本就不是spring管理的bean。加上了@Component一切正常。

[b]3. 总结[/b]
问题虽然很简单,但里面还是有几个知识点的:
1) spring2.5之后AOP已经全面被@Aspect等注解取代了,写起来很简便。

2)@AspectJ风格的切面可以通过@Compenent注解标识其为Spring管理Bean,也可以在xml里配置bean,无论哪种必须配置为bean。@Aspect注解[color=red]不能[/color]被Spring[color=red]自动识别并注册为Bean[/color]。
<aop:aspectj-autoproxy/>用于开启Spring对@AspectJ风格切面的支持,但不能自动识别为bean,即使开启了 <context:component-scan>。

[color=red]另外,spring允许abstract class里通过@Resource或@Autowired注入bean, 而abstract class本身不必是bean,也不可能是bean。[/color]


[b]另外关于Aspect可以参考:[/b]
1.通用知识点:[url]http://jinnianshilongnian.iteye.com/blog/1415606[/url]
2.Around和AfterThrowing不兼容[url]http://tianya23.blog.51cto.com/1081650/565034[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值