Grundsätzlich habe ich eine Klasse A, die von Klasse B abhängt, die wiederum von einer federverwalteten Bean C abhängt, aber ich möchte B nicht als Klassenvariable behalten, sondern B innerhalb einer Methode aus irgendeinem Grund verwenden . Meine Lösung besteht darin, eine statische Methode get() in B zu erstellen, die eine Instanz von B zurückgibt. Das Problem ist nun, dass C nicht korrekt in B injiziert wird.Kann Spring diesen Benutzerfall verarbeiten? Weder Eigenschaft noch Konstruktorinjektion
// 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 {
}
Wie löse ich dieses Problem?
Warum ist es unmöglich, B nach A zu injizieren? Das ist der korrekteste und "früheste" Weg, dies zu tun. Ich würde versuchen, das Grundproblem zu lösen, anstatt zu versuchen, einen Workaround zu finden. –