Spring – Conteneurs IoC

author
3 minutes, 30 seconds Read

Le conteneur IoC de Spring est au cœur du Framework Spring. Le conteneur va créer les objets, les câbler, les configurer, et gérer leur cycle de vie complet de la création à la destruction. Le conteneur Spring utilise l’injection de dépendance (DI) pour gérer les composants qui composent une application.

Spring fournit les deux types de conteneurs suivants.

  1. Conteneur BeanFactory
  2. Conteneur ApplicationContext

Lire la suite : Inversion de contrôle et injection de dépendances

BeanFactory

Un BeanFactory n’est essentiellement rien de plus que l’interface d’une usine avancée capable de maintenir un registre de différents beans et de leurs dépendances.

La BeanFactory nous permet de lire les définitions de beans et d’y accéder en utilisant la fabrique de beans.

1.1. Comment créer une BeanFactory

Lorsqu’on utilise seulement la BeanFactory, on peut en créer une et lire quelques définitions de bean au format XML comme suit :

Les autres façons de créer une bean factory sont les suivantes :

Basiquement, c’est tout ce qu’il y a. En utilisant getBean(String), vous pouvez récupérer les instances de vos beans ; la vue côté client de la BeanFactory est étonnamment simple.

1.2. Méthodes de BeanFactory

L’interface BeanFactory ne comporte que six méthodes que le code client peut appeler :

  1. boolean containsBean(String) : renvoie vrai si le BeanFactory contient une définition ou une instance de bean qui correspond au nom donné
  2. Object getBean(String) : renvoie une instance du bean enregistré sous le nom donné. Selon la façon dont le bean a été configuré par la configuration BeanFactory, soit une instance singleton et donc partagée, soit un bean nouvellement créé sera retourné. Un BeansException sera lancé lorsque soit le bean n’a pas pu être trouvé (dans ce cas, ce sera un NoSuchBeanDefinitionException), soit une exception s’est produite lors de l’instanciation et de la préparation du bean
  3. Object getBean(String, Class) : retourne un bean, enregistré sous le nom donné. Le bean retourné sera coulé dans la classe donnée. Si le bean n’a pas pu être cast, les exceptions correspondantes seront lancées (BeanNotOfRequiredTypeException). En outre, toutes les règles de la méthode getBean(String) s’appliquent (voir ci-dessus)
  4. Class getType(String name) : renvoie le Class du bean avec le nom donné. Si aucun bean correspondant au nom donné n’a pu être trouvé, un NoSuchBeanDefinitionException sera lancé
  5. boolean isSingleton(String) : détermine si la définition de bean ou l’instance de bean enregistrée sous le nom donné est ou non un singleton. Si aucun bean correspondant au nom donné n’a pu être trouvé, un NoSuchBeanDefinitionException sera lancé
  6. String getAliases(String) : Retourner les alias pour le nom de bean donné, s’il y en a eu dans la définition du bean

ApplicationContext

Le conteneur ApplicationContext ajoute des fonctionnalités plus spécifiques à l’entreprise, telles que la capacité de résoudre des messages textuels à partir d’un fichier de propriétés et la capacité de publier des événements d’application aux auditeurs d’événements intéressés. Ce conteneur est défini par l’interface org.springframework.context.ApplicationContext.

Le conteneur ApplicationContext comprend toutes les fonctionnalités du conteneur BeanFactory, il est donc généralement recommandé par rapport au BeanFactory. BeanFactory peut encore être utilisé pour les applications légères comme les appareils mobiles ou les applications basées sur des applets où le volume et la vitesse des données sont importants.

2.1. Types d’ApplicationContext

Les implémentations ApplicationContext les plus couramment utilisées sont:

  1. FileSystemXmlApplicationContext – Ce conteneur charge les définitions des beans à partir d’un fichier XML. Ici, vous devez fournir le chemin complet du fichier de configuration des beans XML au constructeur.
  2. ClassPathXmlApplicationContext – Ce conteneur charge les définitions des beans à partir d’un fichier XML. Ici, vous n’avez pas besoin de fournir le chemin complet du fichier XML mais vous devez définir CLASSPATH correctement car ce conteneur cherchera le fichier XML de configuration des beans dans CLASSPATH.
  3. WebXmlApplicationContext – Ce conteneur charge le fichier XML avec les définitions de tous les beans à partir d’une application web.

2.2. Comment créer un ApplicationContext

Un exemple de code pour l’instanciation du contexte d’application ressemblera à ceci.

Similar Posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.