package org.springframework.context;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.Aware;
/**
* Interface to be implemented by any object that wishes to be notified
* of the {@link ApplicationContext} that it runs in.
*
* <p>Implementing this interface makes sense for example when an object
* requires access to a set of collaborating beans. Note that configuration
* via bean references is preferable to implementing this interface just
* for bean lookup purposes.
*
* <p>This interface can also be implemented if an object needs access to file
* resources, i.e. wants to call {@code getResource}, wants to publish
* an application event, or requires access to the MessageSource. However,
* it is preferable to implement the more specific {@link ResourceLoaderAware},
* {@link ApplicationEventPublisherAware} or {@link MessageSourceAware} interface
* in such a specific scenario.
*
* <p>Note that file resource dependencies can also be exposed as bean properties
* of type {@link org.springframework.core.io.Resource}, populated via Strings
* with automatic type conversion by the bean factory. This removes the need
* for implementing any callback interface just for the purpose of accessing
* a specific file resource.
*
* <p>{@link org.springframework.context.support.ApplicationObjectSupport} is a
* convenience base class for application objects, implementing this interface.
*
* <p>For a list of all bean lifecycle methods, see the
* {@link org.springframework.beans.factory.BeanFactory BeanFactory javadocs}.
*
* @author Rod Johnson
* @author Juergen Hoeller
* @author Chris Beams
* @see ResourceLoaderAware
* @see ApplicationEventPublisherAware
* @see MessageSourceAware
* @see org.springframework.context.support.ApplicationObjectSupport
* @see org.springframework.beans.factory.BeanFactoryAware
*/
public interface ApplicationContextAware extends Aware {
/**
* Set the ApplicationContext that this object runs in.
* Normally this call will be used to initialize the object.
* <p>Invoked after population of normal bean properties but before an init callback such
* as {@link org.springframework.beans.factory.InitializingBean#afterPropertiesSet()}
* or a custom init-method. Invoked after {@link ResourceLoaderAware#setResourceLoader},
* {@link ApplicationEventPublisherAware#setApplicationEventPublisher} and
* {@link MessageSourceAware}, if applicable.
* @param applicationContext the ApplicationContext object to be used by this object
* @throws ApplicationContextException in case of context initialization errors
* @throws BeansException if thrown by application context methods
* @see org.springframework.beans.factory.BeanInitializationException
*/
void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
}
简介
org.springframework.beans.factory.Aware
的一个子接口。
文档
任何希望得到其所在运行的 ApplicationContext
通知的对象所要实现的接口。
例如,在对象需要访问一组 协作bean
的情况下,实现此接口很有意义。请注意,仅出于 bean查找
目的,通过 bean引用
进行配置比实现此接口更可取。
如果对象需要访问文件资源(例如,要调用 getResource
,要发布应用程序事件或需要访问 MessageSource
),则也可以实现此接口。但是,在这种特定情况下,最好实现更具体的 ResourceLoaderAware
,ApplicationEventPublisherAware
或 MessageSourceAware
接口。
请注意,文件资源依赖关系也可以公开为 org.springframework.core.io.Resource
类型的 bean
属性,由bean工厂通过字符串自动类型转换进行填充。这消除了仅出于访问特定文件资源的目的而实现任何回调接口的需要。
org.springframework.context.support.ApplicationObjectSupport
是应用程序对象的便捷基类,实现了此接口。
有关所有 bean生命周期
方法的列表,请参见 BeanFactory javadocs
。
setApplicationContext
设置该对象在其中运行的 ApplicationContext
。通常,此调用将用于初始化该对象。在填充正常的 bean属性
之后但在初始化回调之前调用,例如 org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
或自定义的初始化方法。 如果适用,在 ResourceLoaderAware#setResourceLoader
,ApplicationEventPublisherAware#setApplicationEventPublisher
和 MessageSourceAware
之后调用。
网友评论