Spring – Bean Scopes

Publicités

.

Lorsque vous définissez un <bean>, vous avez la possibilité de déclarer un scope pour ce bean. Par exemple, pour forcer Spring à produire une nouvelle instance de bean à chaque fois qu’il en faut une, vous devez déclarer l’attribut scope du bean comme étant prototype. De même, si vous voulez que Spring renvoie la même instance de bean chaque fois qu’il en faut une, vous devez déclarer l’attribut scope du bean comme étant singleton.

Le Spring Framework prend en charge les cinq scopes suivants, dont trois ne sont disponibles que si vous utilisez un ApplicationContext conscient du Web.


Sr.No. Scope & Description
1

singleton

Ceci scande la définition du bean à une seule instance par conteneur Spring IoC (par défaut).

2 prototype

Cette définition de bean est étendue à un nombre quelconque d’instances d’objets.

3

request

Cette définition de bean est étendue à une requête HTTP. Uniquement valable dans le contexte d’un Contexte d’application Spring conscient du web.

4

session

Cette définition de bean s’applique à une session HTTP. Uniquement valable dans le contexte d’un Spring ApplicationContext conscient du web.

5

global-session

Cette définition de bean s’étend à une session HTTP globale. Uniquement valable dans le contexte d’un Spring ApplicationContext conscient du web.

Dans ce chapitre, nous allons discuter des deux premiers scopes et les trois autres seront abordés lorsque nous parlerons du Spring ApplicationContext conscient du web.

Le scope singleton

Si un scope est défini comme singleton, le conteneur Spring IoC crée exactement une instance de l’objet défini par cette définition de bean. Cette instance unique est stockée dans un cache de tels beans singleton, et toutes les demandes et références ultérieures pour ce bean nommé renvoient l’objet en cache.

Le scope par défaut est toujours singleton. Toutefois, lorsque vous avez besoin d’une et d’une seule instance d’un bean, vous pouvez définir la propriété scope sur singleton dans le fichier de configuration du bean, comme le montre l’extrait de code suivant –

<!-- A bean definition with singleton scope --><bean id = "..." class = "..." scope = "singleton"> <!-- collaborators and configuration for this bean go here --></bean>

Exemple

Mettons en place un IDE Eclipse fonctionnel et suivons les étapes suivantes pour créer une application Spring –

<!-- A bean definition with singleton scope --><bean id = "..." class = "..." scope = "singleton"> <!-- collaborators and configuration for this bean go here --></bean>

Etapes Description
1 Créer un projet avec un nom SpringExample et créer un package com.tutorialspoint sous le dossier src du projet créé. 2 Ajouter les bibliothèques Spring requises en utilisant l’option Add External JARs comme expliqué dans le chapitre Spring Hello World Example.
3 Créer les classes Java HelloWorld et MainApp sous le package com.tutorialspoint.
4 Créer le fichier de configuration Beans.xml sous le dossier src. 5 L’étape finale consiste à créer le contenu de tous les fichiers Java et le fichier de configuration des Beans et à exécuter l’application comme expliqué ci-dessous.

Voici le contenu du fichier HelloWorld.java –

package com.tutorialspoint;public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); }}

Voici le contenu du fichier MainApp.java –

package com.tutorialspoint;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp { public static void main(String args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld objA = (HelloWorld) context.getBean("helloWorld"); objA.setMessage("I'm object A"); objA.getMessage(); HelloWorld objB = (HelloWorld) context.getBean("helloWorld"); objB.getMessage(); }}

Voici le fichier de configuration Beans.xml nécessaire pour le scope singleton –

<?xml version = "1.0" encoding = "UTF-8"?><beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "singleton"> </bean></beans>

Une fois que vous avez terminé de créer les fichiers de configuration des sources et des beans, exécutons l’application. Si tout va bien avec votre application, elle imprimera le message suivant –

Your Message : I'm object AYour Message : I'm object A

Le scope prototype

Si le scope est défini sur prototype, le conteneur IoC de Spring crée une nouvelle instance du bean de l’objet chaque fois qu’une requête pour ce bean spécifique est faite. En règle générale, utilisez le scope prototype pour tous les beans à état complet et le scope singleton pour les beans sans état.

Pour définir un prototype scope, vous pouvez définir la propriété scope sur prototype dans le fichier de configuration du bean, comme le montre l’extrait de code suivant –

<!-- A bean definition with prototype scope --><bean id = "..." class = "..." scope = "prototype"> <!-- collaborators and configuration for this bean go here --></bean>

Exemple

Mettons l’IDE Eclipse en place et suivons les étapes suivantes pour créer une application Spring –

<!-- A bean definition with prototype scope --><bean id = "..." class = "..." scope = "prototype"> <!-- collaborators and configuration for this bean go here --></bean>
Etapes Description
1 Créer un projet avec un nom SpringExample et créer un package com.tutorialspoint sous le dossier src du projet créé. 2 Ajouter les bibliothèques Spring requises en utilisant l’option Add External JARs comme expliqué dans le chapitre Spring Hello World Example.
3 Créer les classes Java HelloWorld et MainApp sous le package com.tutorialspoint.
4 Créer le fichier de configuration Beans.xml sous le dossier src. 5 L’étape finale consiste à créer le contenu de tous les fichiers Java et le fichier de configuration des Beans et à exécuter l’application comme expliqué ci-dessous.

Voici le contenu du fichier HelloWorld.java

package com.tutorialspoint;public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); }}

Voici le contenu du fichier MainApp.java –

package com.tutorialspoint;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp { public static void main(String args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld objA = (HelloWorld) context.getBean("helloWorld"); objA.setMessage("I'm object A"); objA.getMessage(); HelloWorld objB = (HelloWorld) context.getBean("helloWorld"); objB.getMessage(); }}

Voici le fichier de configuration Beans.xml nécessaire au prototype scope –

<?xml version = "1.0" encoding = "UTF-8"?><beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "prototype"> </bean></beans>

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *