跟着视频看的 实现 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 就会异常两个方法里面的方法体都不会执行 如果把单元测试方法体代码注释掉则不会抛出异常 但是实现接口的方法也不会执行
如果需要代码我再补
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.