Maison >Java >javaDidacticiel >Comment injecter des dépendances dans des objets auto-instanciés au printemps ?

Comment injecter des dépendances dans des objets auto-instanciés au printemps ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 23:46:29404parcourir

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

Surmonter les défis d'injection pour les objets auto-instanciés dans Spring

Lorsque vous travaillez avec Spring, il est courant de gérer les dépendances via des annotations et l'injection de dépendances. Cependant, des situations peuvent survenir dans lesquelles vous disposez d'un objet auto-instancié en dehors du contexte Spring. Dans de tels cas, comment pouvez-vous toujours exploiter les capacités d'injection de Spring ?

Le dilemme : instanciation manuelle et gestion des dépendances

Considérez le scénario suivant :

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

...

MyClass obj = new MyClass();</code>

Vous avez instancié MyClass manuellement mais souhaite injecter ses dépendances comme anotherBean. Comment procéder ?

Solution : Utiliser AutowireCapableBeanFactory

Spring fournit l'interface AutowireCapableBeanFactory, qui nous permet d'injecter des dépendances dans n'importe quel objet arbitraire, y compris ceux auto-instanciés. Pour accéder au BeanFactory :

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

Injecter des dépendances dans un objet auto-instancié

À l'aide du beanFactory, vous pouvez injecter des dépendances dans votre objet :

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

Après en appelant autowireBean, votre objet instancié verra ses dépendances injectées et prêtes à l'emploi. Cette approche vous permet d'exploiter les capacités d'injection de dépendances de Spring même pour les objets que vous créez manuellement.

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