2017-07-26 57 views
0

我正在使用Spring JdbcTemplate進行連接。我正在嘗試使用aspectJ直接從JDBC模板記錄「正在執行的查詢」。是否有可能使用第三方包的aspectj點削減(JDBC模板)

是否有可能直接以下列方式使用第三方包(JDBC模板)的aspectj點削減:@pointcut("execution(* org.springframework.jdbc.core.JdbcOperations.*(..))")?當我嘗試這個時,JDBC操作中的這個切入點沒有被調用。

我也試過以下內容:@Pointcut("execution(* org.springframework.jdbc.core.JdbcTemplate.*(..))")。但是,仍然沒有發生。

任何建議,將不勝感激。

回答

0

你不能通過Spring AOP來實現這一點,因爲它在你的應用程序的上下文之外,它由Spring容器管理。 Spring AOP僅限於它自己的應用程序上下文,但可以使用AspectJ

首先您需要將AspectJ runtime library添加到您的項目中。 所需的依賴關係:

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>4.3.5.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.8.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.8.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId> 
     <version>4.3.5.RELEASE</version> 
    </dependency> 

接下來,使項目的AspectJ的性質。我正在使用STS,所以在我的情況下,我只是Enable AspectJ tooling,它會自動將AspectJ運行時添加到我的項目中。您的項目右擊 - >彈簧工具 - >啓用春節因素工裝

enter image description here

確保AspectJ的運行時庫是在classpath

enter image description here

下一頁添加AspectJ方面到項目。

public aspect JdbcAspect { 

    before(): execution(* org.springframework.jdbc.*.*.*(..)) { 
      System.out.println(" ### Intercepted"); 
     } 
} 
相關問題