看这篇之前,需要知道如何使用junit测试spring http://blog.youkuaiyun.com/ch717828/article/details/44805541
通过aware接口,可以对spring相应资源(可能包含相关核心资源)进行操作(一定要慎重)
首先创建一个类,实现ApplicationContextAware接口 , 该借口需要实现 setApplicationContext方法,该方法的参数由容器传递进来。
这样,bean 就获得了ApplicationContext这个资源
package aware;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class GetApplicationContext implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
// TODO Auto-generated method stub
System.out.println(" GetApplicationContext:"+arg0.getBean("getApplicationContext"));
}
}
spring配置文件
<?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="getApplicationContext" class="aware.GetApplicationContext" ></bean>
</beans>
创建一个测试类进行测试
package test.aware;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@RunWith(BlockJUnit4ClassRunner.class)
public class TestAware {
private ClassPathXmlApplicationContext context;
@Test
public void test()
{
context = new ClassPathXmlApplicationContext("spring-aware.xml");
context.getBean("getApplicationContext");
}
}
输出结果:
GetApplicationContext:aware.GetApplicationContext@14bc1199
完整项目:http://download.youkuaiyun.com/detail/ch717828/8560541