Cuando crea una definición de bean, crea un conjunto de reglas para crear instancias reales de la clase definida por esa definición de bean. La idea de que una definición de bean es un conjunto de reglas es importante porque significa que, al igual que una clase, puedes crear múltiples instancias de objetos a partir de un único conjunto de reglas.

No solo puede controlar las diversas dependencias y valores de configuración que deben adjuntarse a un objeto creado a partir de una definición de bean particular, sino que también puede controlar el alcance de los objetos creados a partir de una definición de bean particular. Este enfoque tiene grandes beneficios y es flexible porque puede elegir el alcance de los objetos que crea mediante la configuración, en lugar de tener que preparar el alcance del objeto en el nivel de clase Java. Los beans se pueden definir para implementarse en uno de varios ámbitos. Spring Framework admite seis ámbitos, cuatro de los cuales solo están disponibles si utiliza ApplicationContext compatible con la web. También puedes crear un alcance especial.

La siguiente tabla describe los ámbitos admitidos:

Tabla 3. Ámbitos de visibilidad de beans
Scope Description

singleton object

(Predeterminado) Aplica el alcance de una única definición de bean a una única instancia de objeto para cada contenedor Spring IoC.

prototype

Aplica el alcance de una única definición de bean a cualquier número de instancias de objetos.

request

Aplica el alcance de una única definición de bean al ciclo de vida de una única solicitud HTTP. Por lo tanto, para cada nueva solicitud HTTP, se crea una nueva instancia de bean basada en una única definición de bean. Válido solo en el contexto del ApplicationContext compatible con la web del marco Spring.

session

Aplica el alcance de una única definición de bean para el ciclo de vida HTTP Session. Válido solo en el contexto del ApplicationContext compatible con la web del marco Spring.

application

Aplica el alcance de una única definición de bean al ciclo de vida de ServletContext. Válido solo en el contexto del ApplicationContext compatible con la web del marco Spring.

websocket

Aplica el alcance de una única definición de bean para el ciclo de vida de WebSocket. Válido solo en el contexto del ApplicationContext compatible con la web del marco Spring.

A partir de Spring 3.0, hay disponible un ámbito de transmisión, pero no está registrado de forma predeterminada. Para obtener más información, consulte la documentación en SimpleThreadScope. Para obtener instrucciones sobre cómo registrar este o cualquier otro ámbito personalizado, consulte Uso de un ámbito personalizado.