基本的には、クラスBに依存するクラスBを持っていますが、これはスプリングマネージドBean Cに依存しますが、何らかの理由でBをクラス変数として使用したい。私の解決策は、Bのインスタンスを返す静的メソッドget()をBに作成することです。問題はCが正しくBに注入されないことです。Springはこのユーザー・ケースを処理できますか?プロパティやコンストラクタの注入はありません
// A cannot have B as a class/field variable.
public class A {
public void method(){
// B.get() returns a instance of B, but this instance is not the
// instance that spring created, it is the static "instance" in B.
B.get().doSomething();// ofcourse it throws out a nullpointer exception
}
}
class B{
@Resource(name = "c")
private C c;
private static B instance;
public static B get() {
return instance==null ? (instance=new B()) : instance;
}
public void doSomething(){
c.toString(); // this line will break if c is not
// injected to the instance of b
}
}
@Service("c")
class C {
}
この問題を解決するにはどうすればよいですか?
なぜBをAに注射することができないのですか?それはそれを行う最も正しい、「春」の方法です。回避策を見つけるのではなく、根本的な問題を解決しようとします。 –