spring 提供Aware
接口机制,给外部的类提供获取spring内部信息的能力。
常见的Aware接口
接口 | 描述 |
ApplicationContextAware | 获取容器本身ApplicationContext对象,可以在bean中得到bean所在的应用上下文 |
BeanClassLoaderAware | 获取加载当前bean的类加载器 |
BeanFactoryAware | 获取当前bean的BeanFactory实例,可以用来手动注册 bean |
BeanNameAware | 在bean中得到它在Spring容器中的bean实例的名字 |
ResourceLoaderAware | 获取ResourceLoader实例,获取资源加载器读取资源文件 |
Aware 接口
Aware
接口,只做标记。Aware 仅表示实现类具有在获取springbean创建过程中的一些内部属性的能力。
/**
* 只做标记
* spring容器感知接口
*/
public interface Aware {
}
提供具体能力的接口
ApplicationContextAware
提供获取 applicationContext 的能力
public interface ApplicationContextAware extends Aware {
void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
}
BeanClassLoaderAware
提供获取 classLoader 的能力
public interface BeanClassLoaderAware extends Aware{
void setBeanClassLoader(ClassLoader classLoader);
}
BeanFactoryAware
提供获取 BeanFactory 的能力
public interface BeanFactoryAware extends Aware{
void setBeanFactory(BeanFactory beanFactory) throws BeansException;
}
BeanNameAware
提供获取 beanName 的能力
public interface BeanNameAware extends Aware{
void setBeanName(String beanName);
}
Aware接口执行顺序
@Component
public class TestAware implements
ApplicationContextAware,
ApplicationEventPublisherAware,
BeanClassLoaderAware,
BeanFactoryAware,
BeanNameAware,
ResourceLoaderAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("ApplicationContextAware 回调");
}
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
System.out.println("ApplicationEventPublisherAware 回调");
}
@Override
public void setBeanClassLoader(ClassLoader classLoader) {
System.out.println("BeanClassLoaderAware 回调");
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("BeanFactoryAware 回调");
}
@Override
public void setBeanName(String name) {
System.out.println("BeanNameAware 回调");
}
@Override
public void setResourceLoader(ResourceLoader resourceLoader) {
System.out.println("ResourceLoaderAware 回调");
}
}
运行结果