2017-11-29 25 views
0

春ブーツで春AOPの使用例のすべて(私が発見した)ので、のようなアスペクト/アドバイスの作成を参照してください。@Aspect(コンパイル時)

@Aspect 
@Component 
public class ExampleAspect { 

    ... 

} 

これを実行すると、エラーが発生します"アスペクトをタイプに解決できません"。 他のAOP関連注釈も利用できないようです。私はSpring Boot 1.5.8を使用しています。クラスパスでspring-aopを使用できます。 Spring AOPを有効にするには、クラスパスに何を追加する必要がありますか?春-AOPのための

+0

mavenやGradleなどの依存マネージャを使用していますか?そうでない場合は、spring-aop自体が多くの依存関係を持つようになり、それらをすべて見つけてクラスパスに追加する必要があります。 –

+0

はい、これはmavenによって構築されたことを述べておきます。 – sceaj

答えて

0

POM 4.3.13は、この依存関係はオプションであるため、それは明示的にプロジェクトPOMに記載されている必要があり

<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjweaver</artifactId> 
    <version>1.8.9</version> 
    <scope>compile</scope> 
    <optional>true</optional> 
</dependency> 

が含まれています。プロジェクトPOM(オプションの要素を削除)に追加すると、コンパイルの問題が解決されました。

また、spring-boot-aop-startter POMを親pomとして指定し、spring-aopとaspectjweaverを依存関係として明示的に指定することもできます。

+0

はい、Spring AOPではAspectJウィーバーが不要なのでオプションです。 AspectJの完全なコンパイル時またはロード時にのみ必要です。実際には、コンパイル時にはウィーバーも必要なく、ランタイムが小さくて済みます。しかし、ウィーバーにはランタイムも含まれているため、開発者は単純なままにしたいと思っています。 – kriegaex

+0

もちろん、オプションであるということは完全に理解できます。私はそれがあってはならないということを暗示するつもりはなかったし、春のオッパイに何か問題があったことを暗示するつもりはなかった。ただ、私の問題の原因は、aspectjweaverがクラスパス上になく、明示的にプロジェクトPOMの依存関係 – sceaj