Spring バグシステム ( https://jira.springsource.org/browse/SPR-8551 ) にバグを報告しましたが、何か不足しているかどうかはまだわかりません。
<context:component-scan/>
このステートメントの問題を突き止めました。Web アプリケーションの WEB-INF/lib 内の同じ JAR にある次の 2 つのクラスがあるとします (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?
}
}
jUnit テスト ケースまたは他のタイプのスタンドアロン アプリケーションで実行new BeanSearcher().init()
すると、b に TheBean のインスタンスが割り当てられますが、たとえば JSP で実行すると、ctx.getBean()
null が返されます。
それで、私は何か間違ったことをしているのですか、それとも何かを考慮していないのですか、これは単なるバグですか...?
編集 2011 年 8 月 8 日: 問題を単純化しようとしたため、うまく機能しているように見えますが、それでも機能させようとすると、OpenCms の初期化で失敗します。現在、動作中のバージョンと動作していないバージョンの違いを探しています。(クラスローダー、異なる JAR 内または直接 WEB-INF/classes 内の関連クラスの ubication、リフレクションを介した呼び出しなど)