Guide de Spring BeanFactory

1. Introduction

Cet article se concentrera sur l' exploration de l'API Spring BeanFactory .

L'interface BeanFactory fournit un mécanisme de configuration simple mais flexible pour gérer des objets de toute nature via le conteneur Spring IoC. Jetons un coup d'œil à quelques principes de base avant de plonger dans cette API Spring centrale.

2. Principes de base - Haricots et contenants

En termes simples, les beans sont les objets Java qui forment l'épine dorsale d'une application Spring et sont gérés par le conteneur Spring IoC. À part être géré par le conteneur, il n'y a rien de spécial à propos d'un bean (à tous autres égards, c'est l'un des nombreux objets de l'application).

Le conteneur Spring est responsable de l'instanciation, de la configuration et de l'assemblage des beans. Le conteneur obtient ses informations sur les objets à instancier, configurer et gérer en lisant les métadonnées de configuration que nous définissons pour l'application.

3. Dépendances de Maven

Ajoutons la dépendance Maven requise au fichier pom.xml . Nous utiliserons la dépendance Spring Beans pour configurer BeanFactory:

 org.springframework spring-beans 5.2.8.RELEASE 

4. L' interface BeanFactory

Il est intéressant de commencer par jeter un œil à la définition de l'interface dans le package org.springframework.beans.factory et de discuter de certaines de ses API importantes ici.

4.1. Les API getBean ()

Différentes versions de la méthode getBean () renvoient une instance du bean spécifié, qui peut être partagée ou indépendante dans toute l'application.

4.2. L' API containsBean ()

Cette méthode confirme si cette fabrique de bean contient un bean avec le nom donné. Plus précisément, il confirme si le getBean (java.lang.String) est capable d'obtenir une instance de bean avec le nom donné.

4.3. L' API isSingleton ()

L' API isSingleton peut être utilisée pour demander si ce bean est un singleton partagé. C'est si getBean (java.lang.String) renverra toujours la même instance.

4.4. L' API isPrototype ()

Cette API confirmera si getBean (java.lang.String) renvoie des instances indépendantes - c'est-à-dire un bean configuré avec la portée du prototype, ou non.

La chose importante à noter est que cette méthode retournant false n'indique pas clairement un objet singleton. Il indique des instances non indépendantes, qui peuvent également correspondre à d'autres portées.

Nous devons utiliser l'opération isSingleton (java.lang.String) pour rechercher explicitement une instance de singleton partagée.

4.5. Autres API

Alors que la méthode isTypeMatch (String name, Class targetType) vérifie si le bean avec le nom donné correspond au type spécifié, getType (String name) est utile pour identifier le type du bean avec le nom donné.

Enfin, getAliases (String name) renvoie les alias du nom de bean donné, le cas échéant.

5. API BeanFactory

BeanFactory contient les définitions de bean et les instancie chaque fois que l'application cliente le demande - ce qui signifie:

  • Il prend en charge le cycle de vie d'un bean en l'instanciant et en appelant les méthodes de destruction appropriées
  • Il est capable de créer des associations entre des objets dépendants tout en les instanciant
  • Il est important de souligner que BeanFactory ne prend pas en charge la dépendance basée Annotation-injection alors que ApplicationContext , une surcouche de BeanFactory ne

Lisez le contexte d'application pour découvrir ce qu'il peut faire de plus.

6. Définition du bean

Définissons un simple bean:

public class Employee { private String name; private int age; // standard constructors, getters and setters }

7. Configuration de BeanFactory avec XML

Nous pouvons configurer la BeanFactory avec XML. Créons un fichier bean factory-example.xml:

Notez que nous avons également créé un alias pour le bean employé .

8. BeanFactory avec ClassPathResource

ClassPathResource appartient au package org.springframework.core.io . Exécutons un test rapide et initialisons XmlBeanFactory à l' aide de ClassPathResource comme indiqué ci-dessous:

public class BeanFactoryWithClassPathResourceTest { @Test public void createBeanFactoryAndCheckEmployeeBean() { Resource res = new ClassPathResource("beanfactory-example.xml"); BeanFactory factory = new XmlBeanFactory(res); Employee emp = (Employee) factory.getBean("employee"); assertTrue(factory.isSingleton("employee")); assertTrue(factory.getBean("employee") instanceof Employee); assertTrue(factory.isTypeMatch("employee", Employee.class)); assertTrue(factory.getAliases("employee").length > 0); } }

9. Conclusion

Dans cet article rapide, nous avons découvert les principales méthodes proposées par l' API Spring BeanFactory et un exemple pour illustrer la configuration et son utilisation.

Le code qui sous-tend ces exemples est disponible sur sur GitHub.