Spring中APO切入同類下的其他方法實現事務控制
阿新 • • 發佈:2019-01-28
最近在開發中遇到一個問題,當在Service中定義了一個方法並且切入之後,從Controller裡面呼叫該方法可以實現切入,但是當在同一個Service中實現另一方法並呼叫改方法時卻無法切入。程式碼類似於:
- /**
- * Controller 你懂的
- */
- publicclass Ctrl {
- publicvoid ctrl() {
- ......
- service.callMethodA();
- ......
- }
- }
- /**
- * 業務實現
- */
- publicclass Service {
- /**
- * 被Controller呼叫的方法
-
* 這個方法呼叫被切的方法
- */
- publicvoid callMethodA() {
- ......
- callMethodB();
- ......
- }
- /**
- * Aop切入的方法
- */
- publicvoid callMethodB() {
- ......
- }
- }
- /**
- * AOP的實現
- */
- publicclass Aspect {
- @@AfterReturning("execution(* Service.callMethodB(..))")
- publicvoid after() {
-
Logger.info("after call and do
- }
- }
-
java.lang.IllegalStateException: Cannot find current proxy: Set
- <aop:aspectj-autoproxyproxy-target-class="true"expose-proxy="true"/>
- ((Service) AopContext.currentProxy()).callMethodB();