如果出现AOP不生效(即输出语句没有执行),但是缺也没有报错的原因:
包是有了,所以不会报错,但是aop的包的版本不匹配,它可能是从仓库拿了个同名但是版本不匹配的包,在Ideal工具中的Maven插件中,把该Module的pom.xml文件移除,然后再添加,它会默认从定义好的Parent标签中版本中找到合适的包下载
上面的操作就是相当于"更新"
有可能出现的问题:
1:execution表达式写错了。
2:配置文件或配置类中忘记添加<aop:aspectj-autoproxy/>。
3:如果切入点没有实现接口需要使用cglib动态代理,<aop:aspectj-autoproxy proxy-target-class="true"/>。
4:<context:component-scan 配置的问题导致无法动态代理,具体请参考官方文档。
一般情况下主配置文件要排除@Controller注解,webmvc配置里应该只包含@Controller注解。
如果我们要切入Controller,我们需要在webmvc配置里面加入<aop:aspectj-autoproxy proxy-target-class="true"/>。
如果我们要切入其他如Service,我们需要在主配置里面加入<aop:aspectj-autoproxy proxy-target-class="true"/>。
如果我们既要切入Controller又要切入Service,两个配置都需要加入<aop:aspectj-autoproxy proxy-target-class="true"/>。这个问题比较奇怪,目前还不知道解决方法。