2017-07-26 14 views
0

Spring JdbcTemplateを使用して接続しています。私はaspectJを使用してJDBCテンプレートから直接「実行中のクエリ」をログに記録しようとしています。 @pointcut("execution(* org.springframework.jdbc.core.JdbcOperations.*(..))")サードパーティパッケージ(JDBCテンプレート)にaspectjポイントカットを使用することは可能ですか?

は、次のように直接(JDBCテンプレート)サードパーティのパッケージ用のAspectJポイントカットを使用することが可能ですか?これを試すと、JDBC操作のこのポイントカットは呼び出されませんでした。

私はまた、以下を試みました:@Pointcut("execution(* org.springframework.jdbc.core.JdbcTemplate.*(..))")。しかし、まだ何も起こっていない。

何か提案がありがとうございます。それはあなたのアプリケーションのコンテキスト外だから

答えて

0

あなたはそれが上のSpringコンテナによって管理され、Spring AOPでこれを達成することはできません。 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様相を追加AspectJのランタイムライブラリをクラスパスに

enter image description here

であることを確認してください。

public aspect JdbcAspect { 

    before(): execution(* org.springframework.jdbc.*.*.*(..)) { 
      System.out.println(" ### Intercepted"); 
     } 
} 
関連する問題