Maison  >  Article  >  Java  >  Pourquoi le câblage automatique échoue-t-il dans les constructeurs Spring Boot ?

Pourquoi le câblage automatique échoue-t-il dans les constructeurs Spring Boot ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 03:14:02857parcourir

Why Does Autowiring Fail in Spring Boot Constructors?

Câblage automatique des constructeurs dans Spring Boot

Lorsque vous travaillez avec Spring Boot, l'injection de dépendances dans les constructeurs de beans à l'aide du câblage automatique peut parfois entraîner des valeurs nulles. En effet, le câblage automatique se produit après la construction du bean.

Dans l'extrait de code donné, le bean @Autowired applicationProperties est nul lorsqu'il est référencé dans le constructeur DocumentManager, mais pas lorsqu'il est référencé dans la méthode de conversion. Le problème est que le câblage automatique se produit après l'exécution du constructeur.

Solution : initialisation post-construction

Pour résoudre ce problème, utilisez le @ Annotation PostConstruct sur une méthode de la classe du bean où la dépendance doit être initialisée. Cette méthode sera appelée après la construction du bean et peut être utilisée pour exécuter la logique d'initialisation nécessaire.

Voici comment la classe DocumentManager peut être modifiée pour utiliser l'annotation @PostConstruct :

@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();
  }

  ...

Dans ce code révisé, la logique d'initialisation a été déplacée vers la méthode initialize, qui est annotée avec @PostConstruct. Cela garantit que le bean applicationProperties est disponible lorsque la méthode est appelée après la construction du bean.

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!

Déclaration:
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