AOP多次代理問題

AOP多次執行原因分析:

  1. 一個AOP多次執行,原因:產生重複代理了,典型的是和shiro集成。一般配置<aop:aspectj-autoproxy proxy-target-class="true"/>,這樣會自動創建一個AspectJAwareAdvisorAutoProxyCreator對象。如果shiro中配置了DefaultAdvisorAutoProxyCreator就會和aop命名空間創建的ProxyCreator產生衝突(參考AopNamespaceHandler),解決方法是去掉shiro的這個配置,shiro運行不受影響。參考https://blog.csdn.net/wangjun5159/article/details/51824171

  2. jdk代理和cglib代理同時存在,解決方法:去掉jdk代理,全部走cglib代理。spring aop全部是代理,不管jdk還是cglib。參考https://stackoverflow.com/questions/1606559/spring-aop-vs-aspectj

  3. 配置文件重複加載,錯誤配置 <import resource="classpath*:/spring/applicationContext*.xml" />,這個會導致applicatioinContext開頭的配置文件會被加載多次,改成
    <import resource="classpath:/spring/applicationContext*.xml" />



https://www.jianshu.com/p/50c39f3408eb

https://www.jianshu.com/p/0478bf7a99f5

https://alanli7991.github.io/2016/10/21/%E5%88%87%E9%9D%A2%E7%BC%96%E7%A8%8B%E4%B8%89AspectJ%E4%B8%8EShiro%E4%B8%8D%E5%85%BC%E5%AE%B9%E5%92%8CSpring%E4%BA%8C%E6%AC%A1%E4%BB%A3%E7%90%86%E9%94%99%E8%AF%AF%E5%88%86%E6%9E%90/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章