Package org.springframework.context.support

# Class ApplicationObjectSupport

java.lang.Object
org.springframework.context.support.ApplicationObjectSupport

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `ApplicationContextAware`

public abstract class ApplicationObjectSupport extends Object implements ApplicationContextAware
Convenient superclass for application objects that want to be aware of the application context, for example, 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, for example, 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:
  - `org.springframework.web.context.support.WebApplicationObjectSupport`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
Logger that is available to subclasses.

## Constructor Summary

Constructors
Constructor
Description
`ApplicationObjectSupport()`

## Method Summary

Modifier and Type
Method
Description
`final ApplicationContext`
`getApplicationContext()`
Return the ApplicationContext that this object is associated with.
`protected final 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 final ApplicationContext`
`obtainApplicationContext()`
Obtain the ApplicationContext for actual use.
`protected Class<?>`
`requiredContextClass()`
Determine the context class that any context passed to `setApplicationContext` must be an instance of.
`final 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 Details

### logger

protected final org.apache.commons.logging.Log logger
Logger that is available to subclasses.

## Constructor Details

### ApplicationObjectSupport

public ApplicationObjectSupport()

## Method Details

### setApplicationContext

public final void setApplicationContext(@Nullable ApplicationContext context) throws org.springframework.beans.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
  `org.springframework.beans.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 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 org.springframework.beans.BeansException
Subclasses can override this for custom initialization behavior. Gets called by `setApplicationContext` after setting the context instance.

Note: Does not get called on re-initialization 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
  `org.springframework.beans.BeansException` - if thrown by ApplicationContext methods
See Also:
  - `setApplicationContext(org.springframework.context.ApplicationContext)`

### initApplicationContext

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

The default implementation is empty. Called by `initApplicationContext(ApplicationContext)`.

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

### getApplicationContext

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

Throws:
  `IllegalStateException` - if not running in an ApplicationContext

### obtainApplicationContext

protected final ApplicationContext obtainApplicationContext()
Obtain the ApplicationContext for actual use.

Returns:
  the ApplicationContext (never `null`)
Throws:
  `IllegalStateException` - in case of no ApplicationContext set
Since:
  5.0

### getMessageSourceAccessor

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

Throws:
  `IllegalStateException` - if not running in an ApplicationContext