關於 Spring 的 Aware 介面
阿新 • • 發佈:2018-11-10
一、Spring所提供的Aware介面:
BeanNameAware:在Bean中得到它在IOC容器中的Bean的例項的名字。 BeanFactoryAware:在Bean中得到Bean所在的IOC容器 ApplicationContextAware:在Bean中得到Bean所在的應用上下文 MessageSourceAware:在Bean中可以得到訊息源 ApplicationEventPublisherAware:在bean中可以得到應用上下文的事件釋出器 ResourceLoaderAware:在Bean中可以得到ResourceLoader,從而載入外部對應的Resource資源。
二、以BeanNameAware、ApplicationContextAware介面舉例說明:
<bean id ="myContext" class="com.jsun.test.springDemo.aware.MyApplicationContext"></bean>
//實現BeanNameAware介面,並重寫setBeanName()方法,讓Bean獲取自己在BeanFactory配置中的名字(id或name)
//實現ApplicationContextAware介面,並重寫setApplicationContext()方法
public class MyApplicationContext implements BeanNameAware,ApplicationContextAware{
private String beanName;
//注入的beanName即為MyApplicationContext在BeanFactory配置中的名字(根據情況是id或者name)
@Override
public void setBeanName(String beanName) {
this.beanName = beanName;
System.out.println("MyApplicationContext beanName:" +beanName);
}
@Override
public void setApplicationContext(ApplicationContext context)
throws BeansException {
//通過重寫的介面方法,獲取spring容器例項context,進而獲取容器中相關bean資源
System.out.println(context.getBean(this.beanName).hashCode());
}
}