|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.beans.CachedIntrospectionResults
public class CachedIntrospectionResults
Internal class that caches JavaBeans PropertyDescriptor
information for a Java class. Not intended for direct use by application code.
Necessary as Introspector.getBeanInfo()
in JDK 1.3 will
return a new deep copy of the BeanInfo every time we ask for it. We take the
opportunity to cache property descriptors by method name for fast lookup.
Furthermore, we do our own caching of descriptors here, rather than rely on
the JDK's system-wide BeanInfo cache (to avoid leaks on ClassLoader shutdown).
Information is cached statically, so we don't need to create new
objects of this class for every JavaBean we manipulate. Hence, this class
implements the factory design pattern, using a private constructor and
a static forClass(Class)
factory method to obtain instances.
acceptClassLoader(ClassLoader)
,
clearClassLoader(ClassLoader)
,
forClass(Class)
Method Summary | |
---|---|
static void |
acceptClassLoader(ClassLoader classLoader)
Accept the given ClassLoader as cache-safe, even if its classes would not qualify as cache-safe in this CachedIntrospectionResults class. |
static void |
clearClassLoader(ClassLoader classLoader)
Clear the introspection cache for the given ClassLoader, removing the introspection results for all classes underneath that ClassLoader, and deregistering the ClassLoader (and any of its children) from the acceptance list. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
---|
public static void acceptClassLoader(ClassLoader classLoader)
This configuration method is only relevant in scenarios where the Spring classes reside in a 'common' ClassLoader (e.g. the system ClassLoader) whose lifecycle is not coupled to the application. In such a scenario, CachedIntrospectionResults would by default not cache any of the application's classes, since they would create a leak in the common ClassLoader.
Any acceptClassLoader
call at application startup should
be paired with a clearClassLoader(java.lang.ClassLoader)
call at application shutdown.
classLoader
- the ClassLoader to acceptpublic static void clearClassLoader(ClassLoader classLoader)
classLoader
- the ClassLoader to clear the cache for
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |