Maison  >  Article  >  Java  >  Comment injecter des dépendances dans des objets auto-instanciés au printemps à l'aide d'AutowireCapableBeanFactory ?

Comment injecter des dépendances dans des objets auto-instanciés au printemps à l'aide d'AutowireCapableBeanFactory ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 18:24:02805parcourir

How to Inject Dependencies into Self-Instantiated Objects in Spring Using AutowireCapableBeanFactory?

Utiliser AutowireCapableBeanFactory pour injecter des dépendances dans des objets auto-instanciés

Au Spring, vous pouvez créer vous-même des objets et y injecter des dépendances même après leur création. Ceci est possible grâce à la classe AutowireCapableBeanFactory. Explorons comment y parvenir :

Considérons la classe suivante :

<code class="java">public class MyClass {
    @Autowired private AnotherBean anotherBean;
}</code>

Vous pouvez instancier cette classe et tenter d'injecter manuellement des dépendances vous-même :

<code class="java">MyClass obj = new MyClass();</code>

Cependant , cette approche n'injectera pas automatiquement la dépendance AnotherBean. Pour résoudre ce problème, vous pouvez utiliser la méthode autowireBean() fournie par AutowireCapableBeanFactory.

Pour accéder à AutowireCapableBeanFactory, connectez-le simplement vous-même en tant que dépendance :

<code class="java">private @Autowired AutowireCapableBeanFactory beanFactory;

public void doStuff() {
   MyBean obj = new MyBean();
   beanFactory.autowireBean(obj);
   // obj will now have its dependencies autowired.
}</code>

En appelant autowireBean(), Spring reconnaît l'instance obj comme si elle l'avait créée elle-même. Il injecte ensuite les dépendances nécessaires en fonction des annotations (par exemple @Autowired) présentes sur les propriétés de l'objet. Dans ce cas, l'instance obj aura sa dépendance AnotherBean automatiquement câblée.

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