spring使用@Aspect无效的一个原因

  这段时间在做学校的一个课程设计,老师建议用全注解,就是组件全部用@service @repository标注一个bean,当做到一个地方,需要用到aop的时候,我突然发现死活都无效,打死都拦截不了,上网百度了好久,开始以为是我的依赖包出问题了,于是把asm的包,cglib的包都加进去,就连aspectJ的全部包都加进去,还是不行。后来看见网上说有可能applicationContext与mvc-context冲突了,于是把全部配置放进了mvc-context里面,applicationContext就干脆不要了,还是不行。

 于是我改用了传统一点的配置方法,如下,居然可以了。我将配置慢慢删除,看哪里出了问题。

最后我发现了,原来是spring没有扫到我标注@Aspect的类,原来在类上方标志@Aspect是不够的,还要标上一个@Service或者@component

原来spring是不认@aspect的,就算标了@Aspect,spring也不会认为它是一个bean,感觉踩到一个大坑了, 在这里提醒一下各位童鞋,以后@aspect上面记得顺手加上@service了

 

 <bean id="common" class="com.spring.aop.Common"/>
  <bean id="check" class="com.spring.aop.Check"/>
   
  
<aop:config>
    <aop:aspect id="myAop" ref="check">
      <aop:pointcut id="target" 
expression="execution(* com.spring.aop.Common.execute(..))"/>
      <aop:before method="checkValidity" pointcut-ref="target"/>
      <aop:after method="addLog" pointcut-ref="target"/>
    </aop:aspect>
  </aop:config>

你可能感兴趣的:(spring使用@Aspect无效的一个原因)