@TargetSE(valueSE=TYPESE) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @Import(value=LoadTimeWeavingConfiguration.class) public @interface EnableLoadTimeWeaving
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 メソッドの呼び出し。これは、プログラムベースの直接アクセスを通じて、コードベースの構成アプローチがいかに柔軟であるかを示しています。
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 モジュールに含まれる)
LoadTimeWeaver, DefaultContextLoadTimeWeaver, ClassPreProcessorAgentAdapter| 修飾子と型 | オプションの要素と説明 |
|---|---|
EnableLoadTimeWeaving.AspectJWeaving | aspectjWeavingAspectJ ウィービングを有効にするかどうか。 |
public abstract EnableLoadTimeWeaving.AspectJWeaving aspectjWeaving