Maison > Java > javaDidacticiel > le corps du texte

Pourquoi mon bean @Autowired est-il nul dans le constructeur mais pas dans les autres méthodes ?

Linda Hamilton
Libérer: 2024-11-19 02:02:02
original
804 Les gens l'ont consulté

Why is my @Autowired bean null in the constructor but not in other methods?

Affectation des beans @Autowired dans le constructeur

Un problème courant rencontré lors de l'utilisation des beans @Autowired est qu'ils peuvent initialement être nuls lorsqu'ils sont référencés dans un constructeur. Cet article explore ce comportement et propose une solution pour y remédier.

Dans l'extrait de code fourni, le bean @Autowired applicationProperties est nul lorsqu'il est accessible dans le constructeur DocumentManager, mais il est correctement initialisé lorsqu'il est référencé dans d'autres méthodes. Cette incohérence est due au cycle de vie de l'initialisation du bean.

Le câblage automatique des beans se produit après la construction de l'objet, ce qui signifie qu'aucune valeur ne leur est encore attribuée lorsque le constructeur est appelé. Pour résoudre ce problème, déplacez la logique d'initialisation vers une méthode distincte annotée avec @PostConstruct. Cette annotation garantit que la méthode est invoquée après l'instanciation du bean et l'injection de dépendances, vous permettant ainsi d'accéder de manière fiable aux beans autocâblés.

Extrait de code révisé

public class DocumentManager implements IDocumentManager {
  @Autowired
  private IApplicationProperties applicationProperties;

  public DocumentManager() {
  }

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

  private void startOOServer() {
    if (applicationProperties != null) {
      ...
    }
  }
}
Copier après la connexion

Avec cette modification , le code d'initialisation s'exécutera après la construction de l'objet et garantira que le bean applicationProperties est disponible lorsque cela est requis dans le Gestionnaire de documents.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal