spring使用aspect注解切面不起作用的排查過(guò)程及解決
今天做spring使用aspect注解demo,發(fā)現(xiàn)不起作用,問(wèn)題排查如下:
1.程序正常啟動(dòng),說(shuō)明jar包依賴(lài)沒(méi)有問(wèn)題
2.debug程序不進(jìn)入切面,有可能是路徑問(wèn)題,根據(jù)這個(gè)思路,果真是路徑問(wèn)題,在切面配置類(lèi)的使用@ComponentScan的路徑寫(xiě)錯(cuò)了。
掃描的路徑為:注解類(lèi)、切面類(lèi)及service的上一層目錄即可,假設(shè)項(xiàng)目的結(jié)構(gòu)如下:

則@ComponenScan('demo.com.nrt')即可
SpringBoot切面@aspect--- 注解在嵌套方法不生效的問(wèn)題例如在service中方法如下
@PermissionAop @Override public List<PoiPermission> getList() {List<PoiPermission> list = this.list();return list; } @Override public void test(){this.getList();System.out.println(''); }
controller中調(diào)用test()方法,test方法中調(diào)用切面方法,切面不生效,無(wú)法進(jìn)入切面。
使用如下方式可解決該問(wèn)題(啟動(dòng)類(lèi)上需要添加
@EnableAspectJAutoProxy(exposeProxy = true))
@PermissionAop @Override public List<PoiPermission> getList() {List<PoiPermission> list = this.list();return list; } @Override public void test(){IPoiPermissionService service = (IPoiPermissionService) AopContext.currentProxy();service.getList();System.out.println(''); }
其中IPoiPermissionService為該service類(lèi)實(shí)現(xiàn)的接口。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. JavaScript實(shí)現(xiàn)簡(jiǎn)單的彈窗效果2. Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求3. javascript實(shí)現(xiàn)貪吃蛇小練習(xí)4. 我所理解的JavaScript中的this指向5. Vue 實(shí)現(xiàn)對(duì)quill-editor組件中的工具欄添加title6. PHP驗(yàn)證碼工具-Securimage7. PHP單件模式和命令鏈模式的基礎(chǔ)知識(shí)8. 一文帶你徹底理解Java序列化和反序列化9. PHP利用curl發(fā)送HTTP請(qǐng)求的實(shí)例代碼10. js實(shí)現(xiàn)碰撞檢測(cè)

網(wǎng)公網(wǎng)安備