Null @Autowired Beans in Konstruktoren verstehen
In Java-basierten Spring-Anwendungen werden @Autowired-Abhängigkeiten normalerweise nach der Bean-Instanziierung eingefügt. Das heißt, wenn Sie in einem Konstruktor auf eine @Autowired-Bean verweisen, ist diese null.
Im bereitgestellten Codeausschnitt versuchen Sie, die @Autowired applicationProperties-Bean im DocumentManager-Konstruktor zu verwenden, diese gibt jedoch zunächst null zurück . Dies ist das erwartete Verhalten, da @Autowired-Beans während der Konstruktion noch nicht verfügbar sind.
Um dieses Problem zu umgehen, sollten Sie erwägen, jegliche Initialisierungslogik, die von @Autowired-Beans abhängt, in eine separate Post-Konstruktionsmethode zu verschieben, die mit @PostConstruct annotiert ist. Die @PostConstruct-Methode wird nach der Bean-Instanziierung und bevor die Bean einsatzbereit ist, ausgeführt.
Im korrigierten Code unten wurde die startOOServer()-Methode in eine @PostConstruct-Methode verschoben:
@Component public class DocumentManager implements IDocumentManager { private Log logger = LogFactory.getLog(this.getClass()); private OfficeManager officeManager = null; private ConverterService converterService = null; @Autowired private IApplicationProperties applicationProperties; // Constructors may not access @Autowired beans, so move this logic to a @PostConstruct method public DocumentManager() { } @PostConstruct public void startOOServer() { if (applicationProperties != null) { if (applicationProperties.getStartOOServer()) { try { if (this.officeManager == null) { this.officeManager = new DefaultOfficeManagerConfiguration() .buildOfficeManager(); this.officeManager.start(); this.converterService = new ConverterService(this.officeManager); } } catch (Throwable e){ logger.error(e); } } } } public byte[] convert(byte[] inputData, String sourceExtension, String targetExtension) { byte[] result = null; startOOServer(); ... }
Durch die Verwendung der @PostConstruct-Methode kann sich der Initialisierungscode jetzt sicher darauf verlassen, dass @Autowired-Abhängigkeiten verfügbar sind.
Das obige ist der detaillierte Inhalt vonWarum sind @Autowired Beans in Konstruktoren Null?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung