Annotation Interface EnableLoadTimeWeaving
LoadTimeWeaver for this application context, available as
a bean with the name "loadTimeWeaver", similar to the <context:load-time-weaver>
element in Framework XML.
To be used on @Configuration classes;
the simplest possible example of which follows:
@Configuration
@EnableLoadTimeWeaving
public class AppConfig {
// application-specific @Bean definitions ...
}
The example above is equivalent to the following Framework XML configuration:
<beans>
<context:load-time-weaver/>
<!-- application-specific <bean> definitions -->
</beans>
The LoadTimeWeaverAware interface
Any bean that implements the LoadTimeWeaverAware interface
will then receive the LoadTimeWeaver reference automatically; for example,
Framework's JPA bootstrap support.
Customizing the LoadTimeWeaver
The default weaver is determined automatically: see DefaultContextLoadTimeWeaver.
To customize the weaver used, the @Configuration class annotated with
@EnableLoadTimeWeaving may also implement the LoadTimeWeavingConfigurer
interface and return a custom LoadTimeWeaver instance through the
#getLoadTimeWeaver method:
@Configuration
@EnableLoadTimeWeaving
public class AppConfig implements LoadTimeWeavingConfigurer {
@Override
public LoadTimeWeaver getLoadTimeWeaver() {
MyLoadTimeWeaver ltw = new MyLoadTimeWeaver();
ltw.addClassTransformer(myClassFileTransformer);
// ...
return ltw;
}
}
The example above can be compared to the following Framework XML configuration:
<beans>
<context:load-time-weaver weaverClass="com.acme.MyLoadTimeWeaver"/>
</beans>
The code example differs from the XML example in that it actually instantiates the
MyLoadTimeWeaver type, meaning that it can also configure the instance, e.g.
calling the #addClassTransformer method. This demonstrates how the code-based
configuration approach is more flexible through direct programmatic access.
Enabling AspectJ-based weaving
AspectJ load-time weaving may be enabled with theaspectjWeaving()
attribute, which will cause the AspectJ class transformer to
be registered through LoadTimeWeaver.addTransformer(java.lang.instrument.ClassFileTransformer). AspectJ weaving will be
activated by default if a "META-INF/aop.xml" resource is present on the classpath.
Example:
@Configuration
@EnableLoadTimeWeaving(aspectjWeaving=ENABLED)
public class AppConfig {
}
The example above can be compared to the following Framework XML configuration:
<beans>
<context:load-time-weaver aspectj-weaving="on"/>
</beans>
- 从以下版本开始:
- 4.0
- 作者:
- Chris Beams
- 另请参阅:
-
LoadTimeWeaverDefaultContextLoadTimeWeaverClassPreProcessorAgentAdapter
-
嵌套类概要
嵌套类 -
可选元素概要
可选元素修饰符和类型可选元素说明Whether AspectJ weaving should be enabled.
-
元素详细资料
-
aspectjWeaving
EnableLoadTimeWeaving.AspectJWeaving aspectjWeavingWhether AspectJ weaving should be enabled.- 默认值:
- AUTODETECT
-