Primavera serie de cuatro: Haba Scopes Alcance

La veracidad lado este, siempre colorido primavera.

Aquí Insertar imagen Descripción

contorno

En el Springmarco, podemos en seis incorporada spring beana crear un ámbito bean, puede definir beanel rango. Del rango de seis, sólo en apoyo del uso de Webla applicationContextépoca, cuatro de los cuales están disponibles. singletonY un prototypealcance puede ser utilizado en cualquier tipo de iocrecipiente.

Primavera haba tipo de ámbito

En Spring, se puede utilizar springla @Scopeanotación definida beanalcance. A continuación ofrecemos una lista de seis en Springel contexto de aplicación de usar construida en beanel alcance. Estos mismo ámbito también se aplica al spring boot beanámbito de aplicación.

ALCANCE descripción
singleton spring IoCHay un recipiente beaninstancia de objeto.
prototype En contraste con una única forma de realización, cada solicitud bean, se crea una nueva instancia.
request En la HTTPsolicitud ( Request) el ciclo de vida completo, va a crear y utilizar una única instancia. Se aplica sólo webal medio ambiente Spring ApplicationContextde manera efectiva.
session En la HTTPsesión de ( Session) el ciclo de vida completo, va a crear y utilizar una única instancia. Se aplica sólo webal medio ambiente Spring ApplicationContextde manera efectiva.
application En el ServletContextciclo de vida completo de crear y utilizar una única instancia. Se aplica sólo webal medio ambiente Spring ApplicationContextde manera efectiva.
websocket En el ciclo de vida completo de WebSocket, crear y utilizar una única instancia. Se aplica sólo webal medio ambiente Spring ApplicationContextde manera efectiva.

Singleton alcance

singletonEs springun grano ámbito predeterminado recipiente. Sólo se dice al contenedor para crear y administrar una beaninstancia de clase. La única instancia tales única forma de realización se almacena en beanla memoria caché, y los nombres beande todas las solicitudes posteriores y devolver un ejemplo de referencia para la memoria caché.

El uso de Javauna única configuración de alcance realización beanejemplo:

@Component
@Scope("singleton")  //可以省略,默认即是singleton
public class BeanClass {

}

El uso de XMLuna única configuración de alcance realización beanejemplo:

<!-- 后面的singleton可以省略 -->
<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="singleton" />
//or
<bean id="beanId" class="cn.howtodoinjava.BeanClass" />

alcance prototipo

Todas las solicitudes de Beanproceder con la solicitud, el alcance prototipo va a crear una nueva Beaninstancia.

Usted debe saber que la destrucción del beanenfoque 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 beanejemplo, y todos los recursos que contiene.

Prototipo beangama Javaejemplo de configuración:

@Component
@Scope("prototype")
public class BeanClass {
}

Prototipo beangama XMLejemplo de configuración:

<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="prototype" />

En general, usted debe tener para todos los estados beanque utilizan el alcance prototipo para apátridas beangama Singleton.

A la solicitud, sesión, la aplicación y websocketuso de la gama bean, es necesario registrarse RequestContextListenero RequestContextFilter.

solicitud de alcance

En el ámbito de la petición, para cada contenedor HTTPpara crear una nueva instancia de la solicitud. Por lo tanto, si el servidor 50 solicita el proceso actual, el recipiente puede tener hasta 50 beaninstancias 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.

requestSolicitud beangama Javaejemplo de configuración:

@Component
@Scope("request")
public class BeanClass {
}

//or

@Component
@RequestScope
public class BeanClass {
}

requestSolicitud beangama XMLejemplo 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 HTTPcrear una nueva instancia de la sesión. Por lo tanto, si el servidor tiene 20 sesiones activas, el recipiente puede tener hasta 20 beaninstancias independientes de la clase. Todo en una sola sesión del ciclo de vida HTTPsolicitudes de acceso a la misma sola sesión dentro del alcance de este beanejemplo.

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.

sessionSolicitud beangama Javaejemplo de configuración:

@Component
@Scope("session")
public class BeanClass {
}

//or

@Component
@SessionScope
public class BeanClass {
}

sessionSolicitud beangama XMLejemplo 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 webpara crear una instancia de la aplicación se ejecuta. Es casi gama similar de realización individual, sólo dos diferencias. A saber:

  1. Alcance de uso beancada ServletContextobjeto singleton, el alcance singleton beancada ApplicationContextobjeto singleton. Tenga en cuenta que una sola aplicación puede tener múltiples contextos de aplicación.
  2. Alcance de uso beancomo la ServletContextpropiedad visible.

application beanRango de Javaejemplo de configuración:

@Component
@Scope("application")
public class BeanClass {
}

//or

@Component
@ApplicationScope
public class BeanClass {
}

application beanRango de XMLejemplo de configuración:

<bean id="beanId" class="com.howtodoinjava.BeanClass" scope="application" />

WebSocket Alcance

WebSocketProtocolo 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. WebSocketProtocolo establece una comunicación para las dos direcciones separadas de las TCPconexiones. Esto es particularmente útil para aplicaciones multiusuario con la edición sincrónica y juegos multi-usuario.

En este tipo de Webaplicación HTTPsólo para el apretón de manos inicial. Si el servidor está de acuerdo, el servidor puede HTTPresponder a un (protocolo de intercambio) Estado 101. Si el apretón de manos es exitosa, el TCPzócalo permanece abierta, el cliente y el servidor pueden utilizar el socket para enviar mensajes entre sí.

websocket beanRango de Javaejemplo de configuración:

@Component
@Scope("websocket")
public class BeanClass {
}

websocket beanRango de XMLejemplo de configuración:

<bean id="beanId" class="com.howtodoinjava.BeanClass" scope="websocket" />

Tenga en cuenta que, websocketen el rango beannormalmente modalidad única, y la relación de cualquier sola WebSocketconversación de la vida más largo.

alcance hilo Custom

SpringTambién utiliza la clase SimpleThreadScopeproporciona un alcance hilo no predeterminada. Para utilizar este ámbito, debe utilizar la CustomScopeConfigurerclase 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 beancada solicitud será devuelto en la misma instancia de la misma rosca.

Hilo beangama de Javaejemplos de configuración:

@Component
@Scope("thread")
public class BeanClass {
}

Hilo beangama de xmlejemplos de configuración:

<bean id="beanId" class="cn.howtodoinjava.BeanClass" scope="thread" />

resumen

Spring frameworkProporciona 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 beangama. Del mismo modo, cuando un ámbito diferente beanal 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.


Aquí Insertar imagen Descripción

??? 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

Publicados 112 artículos originales · ganado elogios 90 · Vistas de 350.000 +

Supongo que te gusta

Origin blog.csdn.net/dandandeshangni/article/details/102658321
Recomendado
Clasificación