org.springframework.context.support
Class ApplicationObjectSupport

java.lang.Object
  extended by org.springframework.context.support.ApplicationObjectSupport
All Implemented Interfaces:
ApplicationContextAware
Direct Known Subclasses:
AbstractHandlerMapping, PortletApplicationObjectSupport, WebApplicationObjectSupport

public abstract class ApplicationObjectSupport
extends java.lang.Object
implements ApplicationContextAware

Convenient superclass for application objects that want to be aware of the application context, e.g. for custom lookup of collaborating beans or for context-specific resource access. It saves the application context reference and provides an initialization callback method. Furthermore, it offers numerous convenience methods for message lookup.

There is no requirement to subclass this class: It just makes things a little easier if you need access to the context, e.g. for access to file resources or to the message source. Note that many application objects do not need to be aware of the application context at all, as they can receive collaborating beans via bean references.

Many framework classes are derived from this class, particularly within the web support.

Author:
Rod Johnson, Juergen Hoeller
See Also:
WebApplicationObjectSupport

Field Summary
protected  org.apache.commons.logging.Log logger
          Logger that is available to subclasses
 
Constructor Summary
ApplicationObjectSupport()
           
 
Method Summary
 ApplicationContext getApplicationContext()
          Return the ApplicationContext that this object is associated with.
protected  MessageSourceAccessor getMessageSourceAccessor()
          Return a MessageSourceAccessor for the application context used by this object, for easy message access.
protected  void initApplicationContext()
          Subclasses can override this for custom initialization behavior.
protected  void initApplicationContext(ApplicationContext context)
          Subclasses can override this for custom initialization behavior.
protected  boolean isContextRequired()
          Determine whether this application object needs to run in an ApplicationContext.
protected  java.lang.Class requiredContextClass()
          Determine the context class that any context passed to setApplicationContext must be an instance of.
 void setApplicationContext(ApplicationContext context)
          Set the ApplicationContext that this object runs in.
 
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
Logger that is available to subclasses

Constructor Detail

ApplicationObjectSupport

public ApplicationObjectSupport()
Method Detail

setApplicationContext

public final void setApplicationContext(ApplicationContext context)
                                 throws BeansException
Description copied from interface: ApplicationContextAware
Set the ApplicationContext that this object runs in. Normally this call will be used to initialize the object.

Invoked after population of normal bean properties but before an init callback such as InitializingBean.afterPropertiesSet() or a custom init-method. Invoked after ResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader), ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher) and MessageSourceAware, if applicable.

Specified by:
setApplicationContext in interface ApplicationContextAware
Parameters:
context - the ApplicationContext object to be used by this object
Throws:
ApplicationContextException - in case of context initialization errors
BeansException - if thrown by application context methods
See Also:
BeanInitializationException

isContextRequired

protected boolean isContextRequired()
Determine whether this application object needs to run in an ApplicationContext.

Default is "false". Can be overridden to enforce running in a context (i.e. to throw IllegalStateException on accessors if outside a context).

See Also:
getApplicationContext(), getMessageSourceAccessor()

requiredContextClass

protected java.lang.Class requiredContextClass()
Determine the context class that any context passed to setApplicationContext must be an instance of. Can be overridden in subclasses.

See Also:
setApplicationContext(org.springframework.context.ApplicationContext)

initApplicationContext

protected void initApplicationContext(ApplicationContext context)
                               throws BeansException
Subclasses can override this for custom initialization behavior. Gets called by setApplicationContext after setting the context instance.

Note: Does not get called on reinitialization of the context but rather just on first initialization of this object's context reference.

The default implementation calls the overloaded initApplicationContext() method without ApplicationContext reference.

Parameters:
context - the containing ApplicationContext
Throws:
ApplicationContextException - in case of initialization errors
BeansException - if thrown by ApplicationContext methods
See Also:
setApplicationContext(org.springframework.context.ApplicationContext)

initApplicationContext

protected void initApplicationContext()
                               throws BeansException
Subclasses can override this for custom initialization behavior.

The default implementation is empty. Called by initApplicationContext(org.springframework.context.ApplicationContext).

Throws:
ApplicationContextException - in case of initialization errors
BeansException - if thrown by ApplicationContext methods
See Also:
setApplicationContext(org.springframework.context.ApplicationContext)

getApplicationContext

public final ApplicationContext getApplicationContext()
                                               throws java.lang.IllegalStateException
Return the ApplicationContext that this object is associated with.

Throws:
java.lang.IllegalStateException - if not running in an ApplicationContext

getMessageSourceAccessor

protected final MessageSourceAccessor getMessageSourceAccessor()
                                                        throws java.lang.IllegalStateException
Return a MessageSourceAccessor for the application context used by this object, for easy message access.

Throws:
java.lang.IllegalStateException - if not running in an ApplicationContext