跟着视频看的 实现 ApplicationContextAware 接口后通过方法 的参数获取 Bean 还有一个 JUnit 的测试类应该是 ClassPathXmlApplicationContext 对象 getBean
@Before
public void before() {
if (StringUtils.isEmpty(springXmlpath)) {
springXmlpath = "classpath*:spring-*.xml";
}
try {
context = new ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+"));
context.start();
} catch (BeansException e) {
e.printStackTrace();
}
}
@After
public void after() {
context.destroy();
}
@SuppressWarnings("unchecked")
protected <T extends Object> T getBean(String beanId) {
try {
return (T)context.getBean(beanId);
} catch (BeansException e) {
e.printStackTrace();
return null;
}
}
这个类是 UnitTestbase JUnit4 测试类继承了它 在 @Test 的方法下是 super.getBean("xml 中 Bean 的 id")
然后就抛异常是空指针 但是如果作用域是单例就没事 单元测试方法可以运行 实现 ApplicationContextAware 接口后实现的方法也可以运行 但是如果作用域改为 prototype 就会异常两个方法里面的方法体都不会执行 如果把单元测试方法体代码注释掉则不会抛出异常 但是实现接口的方法也不会执行
如果需要代码我再补
1
choice4 OP dd 有没大哥说一下呀 一天了还是没想通。。
|