Guide de la Spring BeanFactory

Guide de la Spring BeanFactory

1. introduction

Cet article se concentrera surexploring the Spring BeanFactory API.

L'interface deBeanFactory fournit un mécanisme de configuration simple mais flexible pour gérer les objets de toute nature via le conteneur Spring IoC. Examinons quelques notions de base avant de plonger dans cette API Spring centrale.

2. Basics - Haricots et Contenants

En termes simples, les haricots sont les objets Java qui constituent l’ossature 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 avons définies pour l'application.

3. Dépendances Maven

Ajoutons les Mavendependency requis au fichierpom.xml. Nous allons utiliser la dépendance Spring Beans pour configurer BeanFactory:


    org.springframework
    spring-beans
    5.1.4.RELEASE

4. L'interfaceBeanFactory

Il est intéressant de commencer par jeter un œil au packageinterface definition du packageorg.springframework.beans.factory et de discuter ici de certaines de ses API importantes.

4.1. Les APIgetBean()

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

4.2. L'APIcontainsBean()

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

4.3. L'APIisSingleton()

L'APIisSingleton peut être utilisée pour demander si ce bean est un singleton partagé. C'est-à-dire sigetBean(java.lang.String) retournera toujours la même instance.

4.4. L'APIisPrototype()

Cette API confirmera sigetBean(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 retournantfalse 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érationisSingleton(java.lang.String) pour rechercher explicitement une instance de singleton partagé.

4.5. Autres API

Alors que la méthodeisTypeMatch(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. APIBeanFactory

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

  • Il prend en charge le cycle de vie d'un haricot en l'instanciant et en appelant les méthodes de destruction appropriées

  • Il est capable de créer des associations entre les objets dépendants tout en les instanciant

  • Il est important de souligner queBeanFactory ne prend pas en charge l'injection de dépendances basée sur les annotations alors queApplicationContext, un sur-ensemble de BeanFactory

Lisez bienApplication Context pour découvrir ce qu'il peut faire de plus.

6. Définir le haricot

Définissons un simple bean:

public class Employee {
    private String name;
    private int age;

    // standard constructors, getters and setters
}

7. Configurer lesBeanFactory avec XML

Nous pouvons configurer lesBeanFactory avec XML. Créons un fichierbean factory-example.xml:




  
    
    
  
  

Notez que nous avons créé un alias pour le beanemployee.

8. BeanFactory avecClassPathResource

ClassPathResource appartient au packageorg.springframework.core.io. Exécutons un test rapide et initialisonsXmlBeanFactory à l'aide deClassPathResource 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 SpringBeanFactory et un exemple pour illustrer la configuration et son utilisation.

Le code supportant ces exemples est tous disponiblesover on GitHub.