SSM整合报错:Injection of autowired dependencies failed;后置通知与最终通知顺序异常

再给项目配置前置通知、后置通知、异常通知、最终通知时,报出以上错误。

出错原因

在调用切面(Service类)中的方法test()时,Service类中的全局变量没有被test()使用,但仍然使用了@Autowired注入,导致报错

解决方法

将没有使用到的被注入的全局变量去掉@Autowired,程序即可成功运行。
SSM整合报错:Injection of autowired dependencies failed;后置通知与最终通知顺序异常_第1张图片
SSM整合报错:Injection of autowired dependencies failed;后置通知与最终通知顺序异常_第2张图片

关于通知顺序异常

从上图可以看到,后置通知应该在最终通知前,但是实际上却反了。这个是基于注解的spring Aop配置的固有问题,可以通过以下两种方式解决:

  1. 使用纯xml配置文件代替注解方式进行配置
  2. 在使用注解方式的前提下, 建议使用没有顺序问题的环绕通知.

PS:关于Aop

Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。这些通用功能我们称之为切入点(PointCut),拦截到切入点后,我们需要对其根据业务流程进行功能增强,这就是通知的作用。

你可能感兴趣的:(java踩坑,spring,aop)