我刚刚在 Spring 错误系统 ( https://jira.springsource.org/browse/SPR-8551 ) 中提交了一个错误,但我仍然不确定我是否遗漏了什么
<context:component-scan/>
我找到了这个声明的一个问题。给定以下两个类,它们位于 Web 应用程序的 WEB-INF/lib 中的同一 JAR 中(JAR 文件具有目录结构):
测试/TheBean.java:
package test;
@Component
public class TheBean{
}
测试/BeanSearcher.java:
package test;
public class BeanSearcher{
public void init(){
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.scan("test");
ctx.refresh();
TheBean b= ctx.getBean(TheBean.class);
// What is the value of b?
}
}
如果我new BeanSearcher().init()
在 jUnit 测试用例或其他类型的独立应用程序中运行,b 将被分配一个 TheBean 的实例,但如果我在 JSP 中运行它,ctx.getBean()
则返回 null。
那么,我是做错了什么还是没有考虑到某些事情,这只是一个错误......?
编辑 8/8/2011:当我试图简化问题时,它似乎工作得很好,但是当我试图让它工作时,在 OpenCms 的初始化中,它失败了。现在我正在尝试寻找工作版本和不起作用的版本之间的差异。(类加载器,不同JAR或直接在WEB-INF/classes中的相关类的ubication,通过反射调用等)