La veracidad lado este, siempre colorido primavera.
contorno
En el Spring
marco, podemos en seis incorporada spring bean
a crear un ámbito bean
, puede definir bean
el rango. Del rango de seis, sólo en apoyo del uso de Web
la applicationContext
época, cuatro de los cuales están disponibles. singleton
Y un prototype
alcance puede ser utilizado en cualquier tipo de ioc
recipiente.
Primavera haba tipo de ámbito
En Spring
, se puede utilizar spring
la @Scope
anotación definida bean
alcance. A continuación ofrecemos una lista de seis en Spring
el contexto de aplicación de usar construida en bean
el alcance. Estos mismo ámbito también se aplica al spring boot
bean
ámbito de aplicación.
ALCANCE | descripción |
---|---|
singleton |
spring IoC Hay un recipiente bean instancia de objeto. |
prototype |
En contraste con una única forma de realización, cada solicitud bean , se crea una nueva instancia. |
request |
En la HTTP solicitud ( Request ) el ciclo de vida completo, va a crear y utilizar una única instancia. Se aplica sólo web al medio ambiente Spring ApplicationContext de manera efectiva. |
session |
En la HTTP sesión de ( Session ) el ciclo de vida completo, va a crear y utilizar una única instancia. Se aplica sólo web al medio ambiente Spring ApplicationContext de manera efectiva. |
application |
En el ServletContext ciclo de vida completo de crear y utilizar una única instancia. Se aplica sólo web al medio ambiente Spring ApplicationContext de manera efectiva. |
websocket |
En el ciclo de vida completo de WebSocket, crear y utilizar una única instancia. Se aplica sólo web al medio ambiente Spring ApplicationContext de manera efectiva. |
Singleton alcance
singleton
Es spring
un grano ámbito predeterminado recipiente. Sólo se dice al contenedor para crear y administrar una bean
instancia de clase. La única instancia tales única forma de realización se almacena en bean
la memoria caché, y los nombres bean
de todas las solicitudes posteriores y devolver un ejemplo de referencia para la memoria caché.
El uso de Java
una única configuración de alcance realización bean
ejemplo:
@Component
@Scope("singleton") //可以省略,默认即是singleton
public class BeanClass {
}
El uso de XML
una única configuración de alcance realización bean
ejemplo:
<!-- 后面的singleton可以省略 -->
<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="singleton" />
//or
<bean id="beanId" class="cn.howtodoinjava.BeanClass" />
alcance prototipo
Todas las solicitudes de Bean
proceder con la solicitud, el alcance prototipo va a crear una nueva Bean
instancia.
Usted debe saber que la destrucción del bean
enfoque de ciclo de vida no se conoce el alcance de prototipo bean
, simplemente llamar al método de devolución de llamada de inicialización. Por lo tanto, como desarrollador, usted es responsable de limpiar el prototipo de ámbito de bean
ejemplo, y todos los recursos que contiene.
Prototipo bean
gama Java
ejemplo de configuración:
@Component
@Scope("prototype")
public class BeanClass {
}
Prototipo bean
gama XML
ejemplo de configuración:
<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="prototype" />
En general, usted debe tener para todos los estados
bean
que utilizan el alcance prototipo para apátridasbean
gama Singleton.
A la solicitud, sesión, la aplicación y
websocket
uso de la gamabean
, es necesario registrarseRequestContextListener
oRequestContextFilter
.
solicitud de alcance
En el ámbito de la petición, para cada contenedor HTTP
para crear una nueva instancia de la solicitud. Por lo tanto, si el servidor 50 solicita el proceso actual, el recipiente puede tener hasta 50 bean
instancias independientes de la clase. Cualquier caso de un cambio de estado a los otros casos no son visibles. Una vez completada la solicitud, serán destruidos estos ejemplos.
request
Solicitud bean
gama Java
ejemplo de configuración:
@Component
@Scope("request")
public class BeanClass {
}
//or
@Component
@RequestScope
public class BeanClass {
}
request
Solicitud bean
gama XML
ejemplo de configuración:
<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="request" />
ámbito de sesión
En el ámbito de sesión, el contenedor para cada HTTP
crear una nueva instancia de la sesión. Por lo tanto, si el servidor tiene 20 sesiones activas, el recipiente puede tener hasta 20 bean
instancias independientes de la clase. Todo en una sola sesión del ciclo de vida HTTP
solicitudes de acceso a la misma sola sesión dentro del alcance de este bean
ejemplo.
En el ámbito de la sesión, una instancia de cualquier cambio de estado de otros ejemplos no son visibles. Una vez que se destruye la sesión en el servidor / final, será destruido estos casos.
session
Solicitud bean
gama Java
ejemplo de configuración:
@Component
@Scope("session")
public class BeanClass {
}
//or
@Component
@SessionScope
public class BeanClass {
}
session
Solicitud bean
gama XML
ejemplo de configuración:
<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="session" />
ámbito de aplicación
Dentro de la gama de aplicaciones, para cada contenedor web
para crear una instancia de la aplicación se ejecuta. Es casi gama similar de realización individual, sólo dos diferencias. A saber:
- Alcance de uso
bean
cadaServletContext
objeto singleton, el alcance singletonbean
cadaApplicationContext
objeto singleton. Tenga en cuenta que una sola aplicación puede tener múltiples contextos de aplicación. - Alcance de uso
bean
como laServletContext
propiedad visible.
application
bean
Rango de Java
ejemplo de configuración:
@Component
@Scope("application")
public class BeanClass {
}
//or
@Component
@ApplicationScope
public class BeanClass {
}
application
bean
Rango de XML
ejemplo de configuración:
<bean id="beanId" class="com.howtodoinjava.BeanClass" scope="application" />
WebSocket Alcance
WebSocket
Protocolo compatible con la comunicación de dos vías, la selección host remoto y comunicación con el cliente entre el cliente y el host remoto. WebSocket
Protocolo establece una comunicación para las dos direcciones separadas de las TCP
conexiones. Esto es particularmente útil para aplicaciones multiusuario con la edición sincrónica y juegos multi-usuario.
En este tipo de Web
aplicación HTTP
sólo para el apretón de manos inicial. Si el servidor está de acuerdo, el servidor puede HTTP
responder a un (protocolo de intercambio) Estado 101. Si el apretón de manos es exitosa, el TCP
zócalo permanece abierta, el cliente y el servidor pueden utilizar el socket para enviar mensajes entre sí.
websocket
bean
Rango de Java
ejemplo de configuración:
@Component
@Scope("websocket")
public class BeanClass {
}
websocket
bean
Rango de XML
ejemplo de configuración:
<bean id="beanId" class="com.howtodoinjava.BeanClass" scope="websocket" />
Tenga en cuenta que, websocket
en el rango bean
normalmente modalidad única, y la relación de cualquier sola WebSocket
conversación de la vida más largo.
alcance hilo Custom
Spring
También utiliza la clase SimpleThreadScope
proporciona un alcance hilo no predeterminada. Para utilizar este ámbito, debe utilizar la CustomScopeConfigurer
clase para registrarlo en el contenedor.
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
<map>
<entry key="thread">
<bean class="org.springframework.context.support.SimpleThreadScope"/>
</entry>
</map>
</property>
</bean>
En bean
cada solicitud será devuelto en la misma instancia de la misma rosca.
Hilo bean
gama de Java
ejemplos de configuración:
@Component
@Scope("thread")
public class BeanClass {
}
Hilo bean
gama de xml
ejemplos de configuración:
<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="thread" />
resumen
Spring framework
Proporciona seis Spring
bean
ámbitos, cada instancia tiene un papel diferente en el lapso del ciclo de vida. Como desarrolladores, hay que elegir sabiamente cualquier gestión de contenedores bean
gama. Del mismo modo, cuando un ámbito diferente bean
al hacer referencia a unos de otros, tenemos que tomar una decisión informada.
Tenga en cuenta que toda la información dada anteriormente para responder a cualquier spring
bean
ámbito pregunta de la entrevista.
??? atención a las micro-canal público número java seca
de vez en información en tiempo seco compartir
fuente original: la primavera 5 - frijol Scopes