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 Spring 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 Spring 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,
 Spring'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 Spring 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, for example,
 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 Spring XML configuration:
 <beans>
     <context:load-time-weaver aspectj-weaving="on"/>
 </beans>
 
 The two examples are equivalent with one significant exception: in the XML case,
 the functionality of <context:spring-configured> is implicitly enabled when
 aspectj-weaving is "on".  This does not occur when using
 @EnableLoadTimeWeaving(aspectjWeaving=ENABLED). Instead you must explicitly add
 @EnableSpringConfigured (included in the spring-aspects module)
- Since:
- 3.1
- Author:
- Chris Beams
- See Also:
- 
- LoadTimeWeaver
- DefaultContextLoadTimeWeaver
- ClassPreProcessorAgentAdapter
 
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic enumAspectJ weaving enablement options.
- 
Optional Element SummaryOptional ElementsModifier and TypeOptional ElementDescriptionWhether AspectJ weaving should be enabled.
- 
Element Details- 
aspectjWeavingEnableLoadTimeWeaving.AspectJWeaving aspectjWeavingWhether AspectJ weaving should be enabled.- Default:
- AUTODETECT
 
 
-