在spring中提供了很多關(guān)于Aware的接口溉知,該接口擁有一個(gè)統(tǒng)一的規(guī)律猖腕,即在spring對(duì)實(shí)現(xiàn)了Aware相關(guān)接口bean的初始化時(shí)馋评,同時(shí)會(huì)注入相關(guān)的資源诗芜。例如:實(shí)現(xiàn)了BeanFactoryAware接口的bean在初始化完成后瞳抓,容器會(huì)自動(dòng)注入BeanFactory實(shí)例埃疫;實(shí)現(xiàn)了ApplicationContextAware接口的bean在初始化后,也會(huì)同樣注入ApplicationContext實(shí)例孩哑。
示例代碼:
/**
* 實(shí)現(xiàn)Aware相關(guān)接口的bean
*/
public class AwareTest implements BeanFactoryAware {
private BeanFactory beanFactory;
/**
* spring通過(guò)set方法注入beanFactory實(shí)例
* @param beanFactory
* @throws BeansException
*/
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
/**
* 測(cè)試方法
*/
public void awareSay() {
Hello hello = (Hello) beanFactory.getBean("hello");
hello.say();
}
}
/**
* 測(cè)試實(shí)例
*/
public class Hello {
public void say() {
System.out.println("hello aware");
}
}
/**
* 運(yùn)行測(cè)試
*/
public class Run {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-bean.xml");
AwareTest testAware = (AwareTest) applicationContext.getBean("test_aware");
testAware.awareSay();
}
}
配置文件
<bean id="test_aware" class="com.source.aware.AwareTest" />
<bean id="hello" class="com.source.aware.Hello" />
在實(shí)現(xiàn)Aware接口后栓霜,通過(guò)spring自動(dòng)注入BeanFactory的實(shí)例就可以獲取所有spring管理的bean,其他相關(guān)接口也有類(lèi)似的規(guī)律臭笆。