小编Adr*_*nRM的帖子

组件扫描未在Tomcat webapp中的JAR中找到@Component

我刚刚在Spring bug系统中提交了一个错误(https://jira.springsource.org/browse/SPR-8551),但我仍然不确定我是否遗漏了某些东西

我跟踪了<context:component-scan/>这个陈述的问题.给定以下两个类在Web应用程序的WEB-INF/lib中的相同JAR中(JAR文件具有目录结构):

测试/ TheBean.java:

package test;
@Component
public class TheBean{
}
Run Code Online (Sandbox Code Playgroud)

测试/ 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? 
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我new BeanSearcher().init()在jUnit测试用例或其他类型的独立应用程序中运行,则会为b分配一个TheBean实例,但是如果我在JSP中运行它,ctx.getBean()则返回null.

所以,我做错了什么或没有考虑到一些事情,这只是一个错误......?

编辑8/8/2011:当我试图简化问题时似乎工作正常,但是,当我尝试使其工作时,在OpenCms的初始化中,它失败了.现在我试图寻找工作版本和不工作版本之间的差异.(类加载器,不同JAR中或直接在WEB-INF /类中的相关类的使用,通过反射调用等)

spring web-applications opencms applicationcontext

6
推荐指数
1
解决办法
1万
查看次数