spring-aop 進不了切面方法的解決辦法


首先,我在項目中使用aop是打算記錄用戶操作日志的:登錄、登出、修改密碼等;

思路就是在controller方法上增加自定義注解,然后在切面類中增加切點Pointcut(@annotation(自定義的注解)),然后在進方法前把用戶信息記錄好,用的是@Before()

因為是用注解,所以配置方面比較簡單,如下:

<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:component-scan base-package="com.test.aspect" />

然后將注解添加在需要記錄的方法上面

這里說一下,如果需要拿到注解里面的值,可以通過對切面方法進行入參,例如:注解為@Log ,切面方法入參寫法為public void recordLog(Log log) ,
@Before(@annotation(log)),也就是方法的入參名,與注解名首字母小寫一致。

其他的就不多說,這里說一下踩得大坑!!!

一切准備就緒,啟動項目,按道理是要先進@Before修飾的方法的,但是每一次都直接跳到切點方法去了,在網上也看了很多文章,不行;問同事,同事還拿他的demo給我看了,一樣的,但也不知道為啥
我的不行;就這么搞了一天;

后面還是在網上看到的,真的找了好久:原因是我把
<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:component-scan base-package="com.test.aspect" /> 這里的配置配到了spring的配置文件applicationContext.xml中了,而不是在springMVC的配置文件springmvc-servlet.xml
中,這樣的話啟動,代理對象不生效;后面改了,就好了。記錄一下(我也不知道原因,有知道的老鐵麻煩評論留言,謝謝!)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM