MoocApplicationContext类:
package com.imooc.aware; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class MoocApplicationContext implements ApplicationContextAware { @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("MoocApplicationContext : " + applicationContext.getBean("moocApplicationContext").hashCode()); } }
MoocBeanName类:
package com.imooc.aware; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanNameAware; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class MoocBeanName implements BeanNameAware, ApplicationContextAware { private String beanName; @Override public void setBeanName(String name) { this.beanName = name; System.out.println("MoocBeanName : " + name); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("setApplicationContext : " + applicationContext.getBean(this.beanName).hashCode()); } }
spring—Aware.xml配置:
<?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="moocApplicationContext" class="com.imooc.aware.MoocApplicationContext" ></bean> --> <bean id="moocBeanName" class="com.imooc.aware.MoocBeanName" ></bean> </beans>
测试类:
package com.imooc.test.aware; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner; import com.imooc.test.base.UnitTestBase; @RunWith(BlockJUnit4ClassRunner.class) public class TestAware extends UnitTestBase { public TestAware() { super("classpath:spring-aware.xml"); } // @Test // public void testMoocApplicationContext() { // System.out.println("testMoocApplicationContext : " + super.getBean("moocApplicationContext").hashCode()); // } @Test public void textMoocBeanName() { System.out.println("textMoocBeanName : " + super.getBean("moocBeanName").hashCode()); } }
输出结果为:
七月 10, 2018 9:20:26 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5d22bbb7: startup date [Tue Jul 10 21:20:26 GMT+08:00 2018]; root of context hierarchy 七月 10, 2018 9:20:26 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [spring-aware.xml] MoocBeanName : moocBeanName setApplicationContext : 1383547042 textMoocBeanName : 1383547042 七月 10, 2018 9:20:26 下午 org.springframework.context.support.AbstractApplicationContext doClose 信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@5d22bbb7: startup date [Tue Jul 10 21:20:26 GMT+08:00 2018]; root of context hierarchy