spring_aware
2023/7/3...大约 2 分钟
Spring的Aware
ApplicationContextAware
当ApplicationContext
创建一个实现 org.springframework.context.ApplicationContextAware
接口的对象实例时,会为该实例提供对该ApplicationContext
的引用。以下为ApplicationContextAware
接口的定义
public interface ApplicationContextAware {
void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
}
因此,Bean可以通过接口或通过将引用转换为该接口的子类
BeanNameAware
当ApplicationContext
创建一个实现 org.springframework.beans.factory.BeanNameAware
接口的类时,该类被提供了对其关联对象定义中定义的名称的引用。以下清单显示了 BeanNameAware 接口的定义:
public interface BeanNameAware {
void setBeanName(String name) throws BeansException;
}
在填充普通 bean 属性之后但在初始化回调(例如InitializingBean.afterPropertiesSet()
自定义 init 方法)之前调用回调。
其他Aware
Spring 提供了广泛的Aware
回调接口,让 bean 向容器指示它们需要特定的基础设施依赖项。作为一般规则,名称表示依赖类型。
名称 | 注入依赖 | 解释... |
---|---|---|
ApplicationContextAware | 声明ApplicationContext . | ApplicationContextAware 和BeanNameAware |
ApplicationEventPublisherAware | 封闭的事件发布者ApplicationContext 。 | ApplicationContext 的附加功能 |
BeanClassLoaderAware | 类加载器用于加载 bean 类。 | 实例化 Bean |
BeanFactoryAware | 声明BeanFactory . | 这BeanFactory |
BeanNameAware | 声明 bean 的名称。 | ApplicationContextAware 和BeanNameAware |
LoadTimeWeaverAware | 定义的编织器,用于在加载时处理类定义。 | 在 Spring 框架中使用 AspectJ 进行加载时编织 |
MessageSourceAware | 用于解析消息的配置策略(支持参数化和国际化)。 | ApplicationContext 的附加功能 |
NotificationPublisherAware | Spring JMX 通知发布者。 | 通知 |
ResourceLoaderAware | 为对资源进行低级访问而配置的加载程序。 | 资源 |
ServletConfigAware | 当前ServletConfig 容器在其中运行。仅在可感知网络的 Spring 中有效 ApplicationContext 。 | 春季MVC |
ServletContextAware | 当前ServletContext 容器在其中运行。仅在可感知网络的 Spring 中有效 ApplicationContext 。 | 春季MVC |