Heim > Java > javaLernprogramm > Warum ist mein Autowired-Bean im Konstruktor Null?

Warum ist mein Autowired-Bean im Konstruktor Null?

DDD
Freigeben: 2024-11-16 05:45:03
Original
989 Leute haben es durchsucht

 Why is My Autowired Bean Null in the Constructor?

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage