Antes de todo, recordemos que es un Bean: Se trata de una clase normal y corriente, con sus propiedades y cuyos únicos métodos son getters/setters, teniendo obligatoriamente el contructor por defecto o sin parámetros ( este es creado automáticamente siempre que no se cree o se sobrecarge otro con parámetros, en este último caso, hemos de crearlo nosotros explícitamente).
En nuestro caso, el bean que trataremos cumple todas las características mencionadas arriba, aunque además, puede tener más métodos de los ya mencionados (getters/setters).
Decimos que es de Sesión con Estado ya que guarda informacion relativa de cada usuario, es decir, cada cliente va a tener su propio bean, hayase o no registrado previamente. Un ejemplo de todo esto es cuando el usuario abre nuestra página web desde un browser e ingresa productos al carrito de la compra. Otros ejemplos son: ver las operaciones que ha efectuado el usuario, número de veces que ha refrescado la página (siempre que ésta no esté en caché), saber si se ha registrado un usuario...
Veamos los pasos a seguir, como ejemplo tomaremos el carrito de la compra:
- Implementamos el bean:
package org.appfuse.model;
import java.util.ArrayList;
import java.util.List;
public class CarritoCompra {
private List<libro> carrito = new ArrayList<libro>();
public List<libro> getCarrito() {
return carrito;
}
public void setCarrito(List<Libro> carrito) {
this.carrito = carrito;
}
public void añadirLibro(Libro libro) {
if (!carrito.contains(libro))
carrito.add(libro);
}
public void eliminarLibro(Libro libro) {
carrito.remove(libro);
}
} - Utilizamos la anotación @Autowired para aplicar la inyección de dependencias a nuestra aplicación, ya sea desde un controlador u otra clase. Observa que esto también es aplicable a propiedades declaradas como privadas :
@Autowired
private CarritoCompra carritoCompra; - Por último, indicamos al Spring que tenemos un nuevo bean de sessión con estado, por lo que a la declaración típica de bean en el fichero applicationContext.xml le vamos a añadir el valor scope="session", y dentro de ésta <aop:scoped-proxy/>:
<bean id="carritoCompra" class="org.appfuse.model.CarritoCompra"
scope="session">
<aop:scoped-proxy/>
</bean>
No hay comentarios:
Publicar un comentario