Class DefaultContextLoadTimeWeaver

java.lang.Object
org.springframework.context.weaving.DefaultContextLoadTimeWeaver
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.DisposableBean, LoadTimeWeaver

public class DefaultContextLoadTimeWeaver extends Object implements LoadTimeWeaver, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.DisposableBean
Default LoadTimeWeaver bean for use in an application context, decorating an automatically detected internal LoadTimeWeaver.

Typically registered for the default bean name "loadTimeWeaver"; the most convenient way to achieve this is Spring's <context:load-time-weaver> XML tag or @EnableLoadTimeWeaving on a @Configuration class.

This class implements a runtime environment check for obtaining the appropriate weaver implementation, including Spring's VM agent and any ClassLoader supported by Spring's ReflectiveLoadTimeWeaver.

Since:
2.5
Author:
Juergen Hoeller, Ramnivas Laddad, Costin Leau
See Also:
  • Field Details

    • logger

      protected final org.apache.commons.logging.Log logger
  • Constructor Details

    • DefaultContextLoadTimeWeaver

      public DefaultContextLoadTimeWeaver()
    • DefaultContextLoadTimeWeaver

      public DefaultContextLoadTimeWeaver(ClassLoader beanClassLoader)
  • Method Details

    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware
    • createServerSpecificLoadTimeWeaver

      @Nullable protected LoadTimeWeaver createServerSpecificLoadTimeWeaver(ClassLoader classLoader)
    • destroy

      public void destroy()
      Specified by:
      destroy in interface org.springframework.beans.factory.DisposableBean
    • addTransformer

      public void addTransformer(ClassFileTransformer transformer)
      Description copied from interface: LoadTimeWeaver
      Add a ClassFileTransformer to be applied by this LoadTimeWeaver.
      Specified by:
      addTransformer in interface LoadTimeWeaver
      Parameters:
      transformer - the ClassFileTransformer to add
    • getInstrumentableClassLoader

      public ClassLoader getInstrumentableClassLoader()
      Description copied from interface: LoadTimeWeaver
      Return a ClassLoader that supports instrumentation through AspectJ-style load-time weaving based on user-defined ClassFileTransformers.

      May be the current ClassLoader, or a ClassLoader created by this LoadTimeWeaver instance.

      Specified by:
      getInstrumentableClassLoader in interface LoadTimeWeaver
      Returns:
      the ClassLoader which will expose instrumented classes according to the registered transformers
    • getThrowawayClassLoader

      public ClassLoader getThrowawayClassLoader()
      Description copied from interface: LoadTimeWeaver
      Return a throwaway ClassLoader, enabling classes to be loaded and inspected without affecting the parent ClassLoader.

      Should not return the same instance of the ClassLoader returned from an invocation of LoadTimeWeaver.getInstrumentableClassLoader().

      Specified by:
      getThrowawayClassLoader in interface LoadTimeWeaver
      Returns:
      a temporary throwaway ClassLoader; should return a new instance for each call, with no existing state