AppclicationContextWare實(shí)現(xiàn)對(duì)象public?class?MyApplicationContext?implements?ApplicationContextAware,?InitializingBean?{
public?MyApplicationContext()?{
//?TODO?Auto-generated?constructor?stub
}
@Override
public?void?setApplicationContext(ApplicationContext?context)?throws?BeansException?{
//?TODO?Auto-generated?method?stub
System.out.println("ApplicationContextg");
System.out.println("MyApplicationContext:?setApplicationContext?-?"?+?context.getBean("myApplicationContext").hashCode());
}
@Override
public?void?afterPropertiesSet()?throws?Exception?{
//?TODO?Auto-generated?method?stub
System.out.println("初始化對(duì)象?-?MyApplicationContext");
}
}配置文件<?xml?version="1.0"?encoding="UTF-8"?>
<beans?xmlns="http://www.springframework.org/schema/beans"
????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
????xsi:schemaLocation="http://www.springframework.org/schema/beans
????????http://www.springframework.org/schema/beans/spring-beans.xsd"?>
????<bean?id="myApplicationContext"?class="com.springDemo.aware.MyApplicationContext"?/>
</beans>測(cè)試類@RunWith(BlockJUnit4ClassRunner.class)
public?class?AwareTest?{
DefaultListableBeanFactory?factory;
@Before
public?void?init()?{
System.out.println("初始化BeanFactory");
this.factory?=?new?DefaultListableBeanFactory();
XmlBeanDefinitionReader?reader?=?new?XmlBeanDefinitionReader(factory);
ClassPathResource?resource?=?new?ClassPathResource("resource/bean-aware.xml");
reader.loadBeanDefinitions(resource);
}
@After
public?void?destory()?{
}
@Test
public?void?test()?{
MyApplicationContext?context?=?(MyApplicationContext)this.factory.getBean("myApplicationContext");
System.out.println("Get?Bean:?-?"?+?context.hashCode());
}
}輸出打印初始化BeanFactory
八月?30,?2017?11:36:39?下午?org.springframework.beans.factory.xml.XmlBeanDefinitionReader?loadBeanDefinitions
信息:?Loading?XML?bean?definitions?from?class?path?resource?[resource/bean-aware.xml]
初始化對(duì)象?-?MyApplicationContext
Get?Bean:?-?1165897474可見,能成功拿到對(duì)象,InitializingBean的方法也成功調(diào)用,那應(yīng)該是成功實(shí)例化了的,但是setApplicationContext就是不調(diào)用。為什么
為何setApplicationContext方法沒有調(diào)用?
藍(lán)黑Frizen
2017-08-30 23:39:21