Maison > Java > javaDidacticiel > le corps du texte

Pourquoi mon Bean Autowired est-il nul dans le constructeur ?

DDD
Libérer: 2024-11-16 05:45:03
original
892 Les gens l'ont consulté

 Why is My Autowired Bean Null in the Constructor?

Autowiring Beans dans les constructeurs : comprendre les références nulles

Lorsque vous travaillez avec des POJO gérés par Spring, il est courant d'injecter des dépendances à l'aide de @Autowired annotation. Cependant, certains développeurs rencontrent un problème déroutant où le bean autowired est nul lorsqu'il est accédé dans un constructeur. Cet article vise à clarifier ce comportement et à fournir une solution.

Comme mentionné dans la réponse fournie, le câblage automatique se produit généralement après la construction de l'objet. Cela signifie que toutes les références aux beans autocâblés dans le constructeur seront probablement nulles. Pour résoudre ce problème, il est recommandé de déplacer le code d'initialisation du constructeur vers une méthode distincte annotée avec @PostConstruct.

L'extrait de code modifié suivant illustre cette approche :

@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
}
Copier après la connexion

En annotant la méthode init avec @PostConstruct, Spring l'invoquera automatiquement après la construction du bean mais avant qu'il ne soit complètement initialisé. Cela garantit que le bean applicationProperties est disponible pour une utilisation dans la logique d'initialisation.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal