Cet article vous apporte des connaissances pertinentes sur java Le framework Spring est un conteneur IoC qui gère Bean, donc Bean est naturellement une ressource importante dans Spring. Alors, que signifie la portée de Bean ? Combien y a-t-il de types ? Jetons-y un coup d'œil ensemble, j'espère que cela sera utile à tout le monde.
Étude recommandée : "Tutoriel vidéo Java"
Le framework Spring est un conteneur IoC qui gère les beans, les beans sont donc naturellement des ressources importantes au Spring. Alors, que signifie la portée des beans ? Combien y a-t-il de types ? Jetons un coup d'œil ensuite.
PS : Les classes publiques en Java peuvent être appelées Beans ou Java Beans.
La portée d'un Bean fait référence à un certain mode de comportement du Bean dans l'ensemble du framework Spring. Par exemple, la portée singleton signifie qu'il n'y a qu'une seule copie du Bean dans tout le Spring et qu'elle est partagée globalement. Lorsque quelqu'un modifie la valeur, ce qu'une autre personne lit est la valeur modifiée.
Par exemple, nous définissons un utilisateur d'objet Bean singleton dans Spring (la portée par défaut est singleton). Le code d'implémentation spécifique est le suivant :
@Component public class UserBean { @Bean public User user() { User user = new User(); user.setId(1); user.setName("Java"); // 此行为重点:用户名称为 Java return user; } }
Ensuite, nous utilisons et modifions l'objet utilisateur dans la classe A, Le code d'implémentation spécifique. est le suivant :
@Controller public class AController { @Autowired private User user; public User getUser() { User user = user; user.setName("MySQL"); // 此行为重点:将 user 名称修改了 return user; } }
Enfin, l'objet utilisateur est également utilisé dans la classe B. Le code d'implémentation spécifique est le suivant :
@Controller public class BController { @Autowired private User user; public User getUser() { User user = user; return user; } }
A ce moment, lorsque nous accédons à la méthode getUser dans l'objet B, nous constaterons que le Le nom d'utilisateur à l'heure actuelle est de classe A. "MySQL" est modifié en "MySQL" au lieu du "Java" d'origine, ce qui signifie que l'utilisateur de l'objet Bean utilise par défaut la portée singleton. Si cet objet singleton est modifié n'importe où, les autres classes obtiendront une valeur modifiée lorsqu'elles seront à nouveau appelées.
Au Spring, il existe cinq portées courantes de Bean :
2.1 singletonDescription officielle : (par défaut) Étend une seule définition de bean à une seule instance d'objet pour chaque conteneur Spring IoC.
Scénario : Habituellement, les
statelessBeans utilisent cette portée. Sans état signifie que l'état de la propriété de l'objet Bean n'a pas besoin d'être mis à jour.
Remarque : Spring sélectionne cette portée par défaut.
Prototype 2.2Description officielle : étend une définition de bean unique à un nombre quelconque d'instances d'objet.
Scénario : Habituellement, les
Beans avec état utilisent cette portée. Requête 2.3Description officielle : étend une définition de bean unique au cycle de vie d'une requête HTTP unique. Autrement dit, chaque requête HTTP a sa propre instance de bean créée à partir d'une définition de bean unique. contexte d'un Spring ApplicationContext compatible Web.
Description : Chaque requête HTTP créera une nouvelle instance de Bean, similaire au prototype. Scénario : Un bean partagé de requête et de réponse Http. Remarque : utilisation limitée dans le framework Spring MVC. Session 2.4Description officielle : étend une définition de bean unique au cycle de vie d'une session HTTP Uniquement valide dans le contexte d'un contexte d'application Spring compatible Web.Description : Dans une session HTTP, définissez une instance de Bean. Scénario : Bean partagé d'une session utilisateur, par exemple : enregistrement des informations de connexion d'un utilisateur. Remarque : utilisation limitée dans le framework Spring MVC. Application 2.5Description officielle : étend une définition de bean unique au cycle de vie d'un ServletContext Uniquement valide dans le contexte d'un Spring ApplicationContext compatible Web.Description : Dans un contexte de servlet HTTP, définissez une instance de Bean. Scénario : Informations contextuelles des applications Web, telles que l'enregistrement des informations partagées d'une application. Remarque : utilisation limitée dans le framework Spring MVC. 3. Paramètre de portéeNous pouvons définir la portée du Bean via l'annotation @Scope. Il existe deux façons de la définir : Définir directement la valeur spécifique de la portée, par exemple : @Scope("prototype". ) ;Définissez les variables SCOPE_XXX fournies par ConfigurableBeanFactory et WebApplicationContext, telles que @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE). Le code de réglage spécifique est le suivant :La portée d'un Bean fait référence à un certain modèle de comportement du Bean dans l'ensemble du framework Spring. Il existe 5 portées communes de Bean : singleton (portée d'un cas unique), prototype (portée du prototype), requête (portée de la demande), session (portée de la demande), application (portée globale). Faites attention aux trois dernières fonctions. disponible dans le framework Spring MVC.
Apprentissage recommandé : "Tutoriel vidéo Java"
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!