簡體   English   中英

添加AOP建議時Spring Boot應用程序上下文損壞

[英]Spring Boot application context broken when adding AOP advices

我正在嘗試使用此問題中的代碼作為我自己的AOP日志記錄的基礎。 但是,當我添加建議時,將不再加載應用程序上下文。

@Aspect
@Component
public class MyLogger {

    /** Handle to the log file */
    private final Log log = LogFactory.getLog(getClass());

    public MyLogger () {}

    @AfterReturning("execution(* org.my.package.*.*(..))")
    public void logMethodAccessAfter(JoinPoint joinPoint) {
        log.info("***** Completed: " + joinPoint.getSignature().getName() + " *****");
        System.out.println("***** Completed: " + joinPoint.getSignature().getName() + " *****");
    }

    @Before("execution(* org.my.package.*.*(..))")
    public void logMethodAccessBefore(JoinPoint joinPoint) {
        log.info("***** Starting: " + joinPoint.getSignature().getName() + " *****");
        System.out.println("***** Starting: " + joinPoint.getSignature().getName() + " *****");
    }
}

異常堆棧,一大堆Could not autowire field

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.xxxxxx.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119)

UserService是一個完全不相關的類,如果我注釋掉@AfterReturning@Before注釋的方法,一切都會再次運行。

有AOP依賴項:

[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.3.0.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-aop:jar:1.3.0.RELEASE:compile

知道為什么會這樣嗎? 我什至不知道從哪里開始尋找。

您的bean UserService現在是代理,並且與注入所需的類型不匹配。 可能的解決方法:

  • 創建一個接口UserService和一個實現該接口的服務類
  • 啟用基於CGLIB的代理(@EnableAspectJAutoProxy(proxyTargetClass = true))
  • 在編譯時編織方面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM