2011-05-27 7 views
5

¿Alguien puede ayudarme a comprender el alcance personalizado. Pasé por el manual y a través de muchos ejemplos en línea y comprendí cómo se está implementando. Pero todavía no estoy seguro de por qué necesitamos un proxy personalizado, y por qué vamos a ir, limitando el alcance del bean.¿Por qué usaríamos un alcance personalizado en primavera? ¿Cuándo es necesario?

Como sé que para un singleton, utilizamos singleton cuando queremos que se proporcione un solo bean a todas las referencias & usamos un prototipo cuando queremos que se proporcione una nueva referencia cada vez que se hace referencia al bean.

Ahora mi entendimiento en relación con el alcance de encargo es
personalizada alcance- utilizamos ámbito personalizado como a medio camino entre los dos que no es ni queremos pasar sola referencia, ni una nueva referencia cada vez que .. pero entonces es más cerca de singleton donde estamos pasando el mismo bean cada vez, solo desde nuestra ubicación preferida (como threadlocal subyacente o mapa).

por favor, ayúdame a aclarar mi concepto ... La pregunta principal aquí es ¿Por qué ámbito personalizado? y ¿Cuándo se requiere?

Respuesta

3

Eso en realidad depende del problema en cuestión. Por ejemplo, es posible que desee crear un número predefinido de instancias de un bean en particular, pero no más que eso. Hasta que se cumpla este número, sigues creando nuevas instancias, pero una vez que se cumple el número, devuelves instancias existentes de una manera equilibrada.

Esto podría aplicarse a un problema donde la instancia ocupa una cantidad significativa de recursos (por ejemplo, memoria) pero acelera la aplicación si se utiliza una nueva instancia. De esta forma, podría crear una cantidad factible de nuevos objetos cuando sea necesario y delegar en los existentes cuando el número de instancias vaya más allá de esa cantidad (lo que compromete el rendimiento sobre la utilización de recursos).

4

En contexto diferente. Por ejemplo, en una aplicación web. Dos ámbitos se definen allí: "solicitud" y "sesión". Sin embargo, estos a veces no son suficientes. A menudo existe la necesidad de un alcance "flash" (dura para una solicitud y la posterior redirección) o ámbito de "conversación" (dura una secuencia de solicitudes que forman una conversación).

En tal o similares casos, se utiliza un ámbito personalizado.

+0

gracias @Bozho por explicar el problema con el ejemplo apt pero soy un novato en Java EE y solo tengo el manual de referencia de primavera como mi fuente de información de primavera. ¿Puede sugerirnos algún buen enlace/documentación de referencia/libro para un ejemplo detallado de estos ámbitos? –

+0

y según la respuesta dada por Yohan mi entendimiento es "utilizamos un alcance personalizado para la preocupación del rendimiento (en contexto de la aplicación)" y respecto del contexto web - para mantener detalles específicos de la sesión (alcance por sesión), para manejar información relacionada a petición individual (alcance por solicitud) y flash y conversación se crean como se menciona en su respuesta –

+0

la documentación de primavera debería ser suficiente. – Bozho

Cuestiones relacionadas