J'ai vu la portée "application" dans le blog suivant. Est-ce vrai?
Parce que, comme sur mes surfers, j'ai appris que le printemps n'a que les 5 étendues ci-dessous. Corrigez-moi si j'ai tort, s'il-vous plait.
Il y a une section sur le document officiel qui est liée aux champs d'application de haricot:
Fondamentalement, ils définissent la suivante:
singleton (défaut) étend une définition de bean unique à une instance d'objet unique par conteneur Spring IoC.
prototype Etend une définition de bean unique à un nombre illimité d'instances d'objet.
demande Étend une définition de bean unique au cycle de vie d'une requête HTTP unique; c'est-à-dire que chaque requête HTTP a sa propre instance d'un bean créée à l'arrière d'une définition de bean unique. Valable uniquement dans le contexte d'un Spring ApplicationContext compatible Web.
session Étend une définition de bean unique au cycle de vie d'une session HTTP. Valable uniquement dans le contexte d'un Spring ApplicationContext compatible Web.
globalSession Étend une définition de bean unique au cycle de vie d'une session HTTP globale. Généralement valide uniquement lorsqu'il est utilisé dans un contexte de portlet. Valable uniquement dans le contexte d'un Spring ApplicationContext compatible Web.
application Étend une définition de bean unique au cycle de vie d'un ServletContext. Valable uniquement dans le contexte d'un Spring ApplicationContext compatible Web.
websocket Étend une définition de bean unique au cycle de vie d'un WebSocket. Valable uniquement dans le contexte d'un Spring ApplicationContext compatible Web.
De plus, comme Spring 3.0 existe d'autres scope thread scope mais n'est pas enregistré par défaut, vous pouvez même créer votre propre portée:
A partir de Spring 3.0, une étendue de thread est disponible, mais n'est pas enregistrée par défaut. Pour plus d'informations, voir la documentation de SimpleThreadScope. Pour obtenir des instructions sur la façon d’enregistrer ce ou tout autre. une autre portée personnalisée, voir la section intitulée «Utilisation d’une portée personnalisée».
Une section explique comment définir votre étendue personnalisée:
En ce qui concerne Application scope
, ils le définissent comme suit:
Le conteneur Spring crée une nouvelle instance du bean AppPreferences en utilisant la définition du bean appPreferences une fois pour l’ensemble du Web application. En d’autres termes, le bean appPreferences est défini sur le fichier Niveau ServletContext, stocké en tant qu'attribut ServletContext standard.
Cela explique également la différence entre un haricot singleton Spring:
Ceci est un peu similaire à un haricot singleton Spring, mais diffère en deux manières importantes: Il s'agit d'un singleton par ServletContext, pas par Spring 'ApplicationContext' (pour lequel il peut y avoir plusieurs applications Web ), Et il est réellement exposé et donc visible en tant que Attribut ServletContext
Donc, si vous cherchez à utiliser avec XML:
<bean id="apps" class="com.App" scope="application"/>
Ou annotation:
@ApplicationScope
@Component
public class App {
// ...
}
application Étend une définition de bean unique au cycle de vie d'un ServletContext. Valable uniquement dans le contexte d'un Spring ApplicationContext compatible Web.
Suivez le lien pour plus de détails: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory-scopes