AspectJベースのSpringAOPを使用している場合、ロードタイムウィービングを使用するようにアスペクトを構成する必要がありますか?または、AspectJベースのアプローチを使用する場合、Spring AOPはランタイム/コンパイル時のウィービングもサポートしますか?
SpringAOPはプロキシベースです。特に設定がない限り、SpringAOPはランタイムウィービングを実行します。
ウィービング:アスペクトを他のアプリケーションタイプまたはオブジェクトとリンクして、アドバイスされたオブジェクトを作成します。これは、コンパイル時(たとえば、AspectJコンパイラーを使用)、ロード時、または実行時に実行できます。 Spring AOPは、他の純粋なJava AOPフレームワークと同様に、実行時にウィービングを実行します。
ただし、ロード時のウィービングを行うようにSpringを設定することはできます。これを行う方法については、Springのドキュメントを確認してください: http://docs.spring.io/spring/docs/3.2.0.RELEASE/spring-framework-reference/htmlsingle/#aop-aj-ltw
特に、Java Configクラスで@EnableLoadTimeWeaving
を使用します。セットアップは非常に簡単で、@Aspect
クラスは変更されません。
開発者は、起動スクリプトなどのデプロイメント構成を通常担当する管理者に頼るのではなく、アプリケーションコンテキストを形成する1つ以上のファイルを変更するだけで、ロード時のウィービングが可能になります。
SpringAOPとAspectJを混同しないように注意する必要があると思います。