Heim >Java >javaLernprogramm >Warum ist mein Autowired-Bean im Konstruktor Null?
Autowiring-Beans in Konstruktoren: Nullreferenzen verstehen
Bei der Arbeit mit Spring-verwalteten POJOs ist es üblich, Abhängigkeiten mithilfe von @Autowired einzufügen Anmerkung. Einige Entwickler stoßen jedoch auf ein rätselhaftes Problem, bei dem die Autowired-Bean null ist, wenn in einem Konstruktor darauf zugegriffen wird. Ziel dieses Artikels ist es, dieses Verhalten zu klären und eine Lösung bereitzustellen.
Wie in der bereitgestellten Antwort erwähnt, erfolgt die automatische Verdrahtung normalerweise nach der Objektkonstruktion. Das bedeutet, dass alle Verweise auf Autowired-Beans innerhalb des Konstruktors wahrscheinlich null sind. Um dieses Problem zu beheben, wird empfohlen, den Initialisierungscode vom Konstruktor in eine separate Methode zu verschieben, die mit @PostConstruct annotiert ist.
Der folgende modifizierte Codeausschnitt veranschaulicht diesen Ansatz:
@Component public class DocumentManager implements IDocumentManager { @Autowired private IApplicationProperties applicationProperties; // Move initialization code to a PostConstruct method @PostConstruct public void init() { startOOServer(); } private void startOOServer() { if (applicationProperties != null) { // Rest of the initialization code here } } // ... Rest of the class remains the same }
Durch Annotieren Wenn Sie die init-Methode mit @PostConstruct verwenden, ruft Spring sie automatisch auf, nachdem die Bean erstellt wurde, aber bevor sie vollständig initialisiert ist. Dadurch wird sichergestellt, dass die applicationProperties-Bean zur Verwendung innerhalb der Initialisierungslogik verfügbar ist.
Das obige ist der detaillierte Inhalt vonWarum ist mein Autowired-Bean im Konstruktor Null?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!