Diese Frage mag etwas seltsam erscheinen. Angenommen, ich habe einen Dienst, den ich in einer Utility-Klasse mit statischen Methoden verwenden möchte. Der Service ist eine Spring-Bean, also werde ich zum Beispiel einen Setter benutzen und (@Autowired), um ihn 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:
%Vor%Gehen wir nun zurück zu dem, was ich zuerst erwähnt habe (Benutzung des Dienstes in einer statischen Methode):
%Vor%Obwohl der Dienst statisch ist, muss ich seine Definition statisch hinterfragen. Das ist für mich etwas kontraintuitiv. ist das falsch? oder ist es ein besserer Weg? Danke
Sie haben keine Wahl. Wenn Sie ein static
-Feld einer Klasse initialisieren möchten, müssen Sie Spring eine Instanz dieser Klasse erstellen lassen und den Wert injizieren.
Ein kleiner Ratschlag. Es gibt wirklich keinen Grund für Sie, static
Methoden in diesem Fall zu verwenden. Wenn Sie ein Singleton-Dienstprogramm verwenden möchten, geben Sie Ihrer Bean einfach singleton
scope.
Tags und Links java spring dependency-injection static-methods