aop配置切面controller层可以使用,service层不能使用问题

最近使用aop,想做一下service层的异常处理,使用的是注解的方式@Aspect

问题在于,我配置后,controller层的切面是正常的,在controller层我做了日志记录。但是在service层切面不执行。检查了很久都没有发现问题,切点与方法都正确,的确很让人郁闷。

检查了很久,意识到,为什么controller层可以用,service不能用呢?是不是配置出了问题?

问题在于我配置aop的位置

<aop:aspectj-autoproxy proxy-target-class="true"/>

配置文件中 对aop的配置,我放在了spring-mvc的配置文件中

在这里插入图片描述

在这个配置文件中,配置了注解包扫描,但是仅仅配置了controller层

<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.bt.controller"/>
...省略...
 <aop:aspectj-autoproxy proxy-target-class="true"/>

这里没有配置service扫描,service层的扫描配置在 spring-mybatis中,在这里aop扫描不到,aop仅扫描到当前配置文件的包扫描!

令人窒息

最后加上service层的扫描后,aop可以正常使用了

<context:component-scan base-package="com.bt.controller,com.bt.service"/>
...省略...
 <aop:aspectj-autoproxy proxy-target-class="true"/>

猜你喜欢

转载自blog.csdn.net/u013513053/article/details/84893180