アノテーションインターフェース EnableLoadTimeWeaving
@TargetSE(TYPESE)
@RetentionSE(RUNTIMESE)
@DocumentedSE
@Import(LoadTimeWeavingConfiguration.class)
public @interface EnableLoadTimeWeaving
このアプリケーションコンテキストの Spring
デフォルトのウィーバーは自動的に決定されます。
LoadTimeWeaver
をアクティブ化します。これは、Spring XML の <context:load-time-weaver>
要素と同様に、"loadTimeWeaver" という名前の Bean として使用できます。@Configuration
クラスで使用されます。可能な最も単純な例を次に示します。
@Configuration @EnableLoadTimeWeaving public class AppConfig { // application-specific @Bean definitions ... }上記の例は、次の Spring XML 構成と同等です。
<beans> <context:load-time-weaver/> <!-- application-specific <bean> definitions --> </beans>
LoadTimeWeaverAware
インターフェース
LoadTimeWeaverAware
インターフェースを実装する Bean は、LoadTimeWeaver
リファレンスを自動的に受け取ります。たとえば、Spring の JPA ブートストラップサポート。LoadTimeWeaver
のカスタマイズ
デフォルトのウィーバーは自動的に決定されます。DefaultContextLoadTimeWeaver
を参照してください。 使用されるウィーバーをカスタマイズするために、@EnableLoadTimeWeaving
でアノテーションが付けられた @Configuration
クラスは、LoadTimeWeavingConfigurer
インターフェースを実装し、#getLoadTimeWeaver
メソッドを介してカスタム LoadTimeWeaver
インスタンスを返すこともできます。
@Configuration @EnableLoadTimeWeaving public class AppConfig implements LoadTimeWeavingConfigurer { @Override public LoadTimeWeaver getLoadTimeWeaver() { MyLoadTimeWeaver ltw = new MyLoadTimeWeaver(); ltw.addClassTransformer(myClassFileTransformer); // ... return ltw; } }
上記の例は、次の Spring XML 構成と比較できます。
<beans> <context:load-time-weaver weaverClass="com.acme.MyLoadTimeWeaver"/> </beans>
コード例は、実際に MyLoadTimeWeaver
型をインスタンス化するという点で XML 例とは異なります。つまり、インスタンスを構成することもできます。#addClassTransformer
メソッドの呼び出し。これは、プログラムベースの直接アクセスを通じて、コードベースの構成アプローチがいかに柔軟であるかを示しています。
AspectJ ベースのウィービングの有効化
AspectJ のロード時ウィービングはaspectjWeaving()
属性で有効にできます。これにより、AspectJ クラストランスフォーマーが LoadTimeWeaver.addTransformer(java.lang.instrument.ClassFileTransformer)
を通じて登録されます。"META-INF/aop.xml" リソースがクラスパスに存在する場合、AspectJ ウィービングはデフォルトでアクティブになります。例:@Configuration @EnableLoadTimeWeaving(aspectjWeaving=ENABLED) public class AppConfig { }
上記の例は、次の Spring XML 構成と比較できます。
<beans> <context:load-time-weaver aspectj-weaving="on"/> </beans>
2 つの例は 1 つの重要な例外を除いて同等です。XML の場合、aspectj-weaving
が「オン」の場合、<context:spring-configured>
の機能が暗黙的に有効になります。これは @EnableLoadTimeWeaving(aspectjWeaving=ENABLED)
を使用する場合は発生しません。代わりに、@EnableSpringConfigured
を明示的に追加する必要があります (spring-aspects
モジュールに含まれる)
- 導入:
- 3.1
- 作成者:
- Chris Beams
- 関連事項:
LoadTimeWeaver
DefaultContextLoadTimeWeaver
ClassPreProcessorAgentAdapter
ネストされたクラスのサマリー
オプション要素のサマリー
要素の詳細
aspectjWeaving
EnableLoadTimeWeaving.AspectJWeaving aspectjWeavingAspectJ ウィービングを有効にするかどうか。- デフォルト:
- AUTODETECT