アノテーションインターフェース 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
- 関連事項:
LoadTimeWeaverDefaultContextLoadTimeWeaverClassPreProcessorAgentAdapter
ネストされたクラスの要約
ネストされたクラスオプション要素の概要
オプション要素
要素の詳細
aspectjWeaving
EnableLoadTimeWeaving.AspectJWeaving aspectjWeavingAspectJ ウィービングを有効にするかどうか。- デフォルト:
- AUTODETECT