Heim  >  Artikel  >  Java  >  Warum schlägt Autowiring in Spring-Boot-Konstruktoren fehl?

Warum schlägt Autowiring in Spring-Boot-Konstruktoren fehl?

Linda Hamilton
Linda HamiltonOriginal
2024-11-12 03:14:02870Durchsuche

Why Does Autowiring Fail in Spring Boot Constructors?

Autowiring von Konstruktoren in Spring Boot

Beim Arbeiten mit Spring Boot kann das Einfügen von Abhängigkeiten in Bean-Konstruktoren mithilfe von Autowiring manchmal zu Nullwerten führen. Dies liegt daran, dass die automatische Verdrahtung nach der Bean-Erstellung erfolgt.

Im angegebenen Codeausschnitt ist die @Autowired applicationProperties-Bean null, wenn sie im DocumentManager-Konstruktor referenziert wird, nicht jedoch, wenn sie in der Konvertierungsmethode referenziert wird. Das Problem besteht darin, dass die automatische Verdrahtung nach der Ausführung des Konstruktors erfolgt.

Lösung: Post-Construction-Initialisierung

Um dieses Problem zu beheben, verwenden Sie das @ PostConstruct-Annotation für eine Methode in der Bean-Klasse, in der die Abhängigkeit initialisiert werden soll. Diese Methode wird nach der Bean-Erstellung aufgerufen und kann verwendet werden, um die erforderliche Initialisierungslogik auszuführen.

So kann die DocumentManager-Klasse geändert werden, um die @PostConstruct-Annotation zu verwenden:

@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;

  // Remove initialization code from constructor
  public DocumentManager() {
  }

  @PostConstruct
  public void initialize() {
    startOOServer();
  }

  ...

Hier Im überarbeiteten Code wurde die Initialisierungslogik in die Initialisierungsmethode verschoben, die mit @PostConstruct annotiert ist. Dadurch wird sichergestellt, dass die ApplicationProperties-Bean verfügbar ist, wenn die Methode nach der Bean-Erstellung aufgerufen wird.

Das obige ist der detaillierte Inhalt vonWarum schlägt Autowiring in Spring-Boot-Konstruktoren fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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