Diese Frage mag ein wenig seltsam erscheinen. Angenommen, ich habe einen Dienst, den ich in einer Utility-Klasse mit statischen Methoden verwenden möchte. Der Dienst ist eine Spring-Bean, also werde ich zum Beispiel natürlich einen Setter benutzen und (@Autowired), um es in meine Utility-Klasse zu injizieren. Wie in der Dokumentation von Spring erwähnt, sind alle Beans im Bean-Kontext statisch. Wenn Sie also eine Bean in eine Klasse injizieren möchten, müssen Sie den Modifikator "static" nicht verwenden. Siehe unten:Was ist der richtige Weg, eine injizierte Bean in einer statischen Methode zu verwenden?
public class JustAClass{
private Service service;
public void aMethod(){
service.doSomething(....);
}
@Autowired
public void setService(Service service){
this.service = service;
}
}
Jetzt geht zurück zu dem, was ich erwähnte erstes (mit dem Service in einer statischen Methode):
public class JustAClass{
private static Service service;
public static void aMethod(){
service.doSomething(....);
}
@Autowired
public void setService(Service service){
this.service = service;
}
}
Obwohl Dienst statisch ist, bin ich gezwungen, hinter seiner Definition statisch zu setzen. Das ist für mich etwas kontraintuitiv. ist das falsch? oder ist es ein besserer Weg? Danke
Dieses schöne ist, funktioniert für mich! – Kaunteya
Wird das regelmäßig gemacht? Oder wird in diesen Situationen üblicherweise anders vorgegangen? –