spring-context

org.springframework.context.weaving
Class DefaultContextLoadTimeWeaver

java.lang.Object
  extended by 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 java.lang.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.

This class implements a runtime environment check for obtaining the appropriate weaver implementation: As of Spring 3.1, it detects Oracle WebLogic 10, Oracle OC4J 10, GlassFish 3, JBoss AS 5, 6 and 7, IBM WebSphere 7 and 8, Spring's VM agent and any ClassLoader supported by Spring's ReflectiveLoadTimeWeaver (for example the org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader for Tomcat 5, 6 and 7).

Since:
2.5
Author:
Juergen Hoeller, Ramnivas Laddad, Costin Leau
See Also:
ConfigurableApplicationContext.LOAD_TIME_WEAVER_BEAN_NAME

Field Summary
protected  org.apache.commons.logging.Log logger
           
 
Constructor Summary
DefaultContextLoadTimeWeaver()
           
DefaultContextLoadTimeWeaver(java.lang.ClassLoader beanClassLoader)
           
 
Method Summary
 void addTransformer(java.lang.instrument.ClassFileTransformer transformer)
          Add a ClassFileTransformer to be applied by this LoadTimeWeaver.
protected  LoadTimeWeaver createServerSpecificLoadTimeWeaver(java.lang.ClassLoader classLoader)
           
 void destroy()
           
 java.lang.ClassLoader getInstrumentableClassLoader()
          Return a ClassLoader that supports instrumentation through AspectJ-style load-time weaving based on user-defined ClassFileTransformers.
 java.lang.ClassLoader getThrowawayClassLoader()
          Return a throwaway ClassLoader, enabling classes to be loaded and inspected without affecting the parent ClassLoader.
 void setBeanClassLoader(java.lang.ClassLoader classLoader)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final org.apache.commons.logging.Log logger
Constructor Detail

DefaultContextLoadTimeWeaver

public DefaultContextLoadTimeWeaver()

DefaultContextLoadTimeWeaver

public DefaultContextLoadTimeWeaver(java.lang.ClassLoader beanClassLoader)
Method Detail

setBeanClassLoader

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

createServerSpecificLoadTimeWeaver

protected LoadTimeWeaver createServerSpecificLoadTimeWeaver(java.lang.ClassLoader classLoader)

destroy

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

addTransformer

public void addTransformer(java.lang.instrument.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 java.lang.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 java.lang.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

spring-context