Spring Vaadin Hibernate Tutorial > 4. Introducción a Spring

Escrito por 27 abril, 2016Desarrollo de software
Tutorial Spring Vaadin HIbernate, Introducción a Spring

En este cuarto paso del tutorial Spring Vaadin Hibernate vamos a ver una introducción a Spring y su uso en este proyecto.

¿Qué es Spring?

Spring es un framework ligero utilizado para el desarrollo de aplicaciones empresariales (una buena explicación de qué es un framework podemos encontrarla en el siguiente enlace). Cuenta con las siguientes características relevantes:

  • Podemos indicar de manera sencilla que un objeto puede almacenarse en base de datos, o que el acceso a él esté restringido a según qué roles. Todo esto de una forma sencilla y mediante anotaciones.
  • Podemos anotar nuestras clases indicando a qué capa pertencen. Por ejemplo, podemos indicar que una clase pertence la capa de negocio (core en nuestro proyecto) o a la de acceso a datos (persistence). Además de que nos ayuda a gestionar el ciclo de vida de nuestros objetos (que en Spring se denominan Beans o Componentes) y su configuración.
  • El núcleo de Spring sigue un patrón denominado Inversión de Control (IoC). Las apl
    icaciones que usan el principio de IoC se basan en configuraciones (mediante archivos xml o anotaciones) para describir las dependencias entre sus componentes. Esta es una de las características más importantes de Spring, ya que nos permite proporcionar acceso a diferentes servicios de nuestros objetos de manera sencilla y clara. Por ejemplo, nos da la posibilidad de que un objeto de la capa de servicios se pueda comunicar con uno de la capa de persistencia.

Además Spring contiene variedad de módulos, los cuales son los encargados de diferentes partes de nuestra aplicación. Gracias a esta separación en módulos podemos utilizar sólo aquellas partes que necesitemos.

Ciclo de vida de un Bean en Spring

Spring, de manera genérica, es un contenedor de Beans. ¿Qué quiere decir esto? que Spring se encarga de inicializar los Beans en el momento en el que son necesarios, es decir, que no necesitaremos instanciar un objeto de forma manual, sino que será Spring el encargado de realizar esta inicialización. Estos Beans “vivirán” dentro del contenedor de Spring, el cual gestionará su ciclo de vida, o en otras palabras, los inicializará y destruirá cuando sea necesario, sin que tengamos que preocuparnos por ello.

El ciclo de vida de un Bean es algo más complejo que su creación y su destrucción pero, dado que en este tutorial vamos a ver conceptos básicos, recomendamos el siguiente enlace si se quiere estudiar más profundamente el tema del ciclo de vida de los Beans en Spring.

El archivo de configuración applicationContext.xml

En este archivo es donde añadiremos nuestros Beans para que Spring pueda manejarlos.

En nuestro caso se encuentra en la ruta web/src/main/webapp/WEB-INF:

applicationContext

Un ejemplo sencillo del applicationContext.xml es el siguiente:

De esta manera le indicamos a Spring que haga un escaneo del paquete es.mhp (lo que supone la raíz de nuestro proyecto) y que todos aquellos Beans de Spring que encuentre (los que hayan sido anotados como beans), los añada a su contenedor de Beans.

Anotaciones

El uso de anotaciones aparece a partir de Spring 2.5 y es una manera bastante sencilla de indicar a Spring que una clase es un Bean de Spring. Para ello existen diferentes formas de hacerlo:

  • @Component: es de propósito general, indica que la clase es un componente Spring.
  • @Controller: indica que la clase define un controlador Spring.
  • @Repository: la clase es un repositorio de datos.
  • @Service: indica que la clase define un servicio.

Por tanto, si queremos anotar que una de nuestras clases es un componente de Spring, debemos utilizar alguna de esas anotaciones. Por ejemplo:

  • La anotación @Autowired

Con esta anotación indicamos a Spring que debe buscar en su contenedor de Spring una implementación para la interfaz IAddressService e inyectarla en la variable addressService para que pueda ser utilizada. De esta forma no es necesario que hagamos un new de la interfaz indicando la implementación que queremos utilizar, sino que Spring buscará las implementaciones de esa interfaz en el contenedor, creará una instancia y dejará el objecto addressService listo para ser utilizado.

  • ¿Qué ocurre si tengo más de una implementación de una misma interfaz?
    • @Qualifier: le indica a Spring exactamente qué implementación ha de instanciar.
    • @Component(“”): se le informa a Spring el nombre del componente, ya que será el nombre por el cual Spring lo buscará a la hora de hacer el Qualifier.

Scopes

Los beans en Spring tienen diferentes ámbitos. Un ámbito define el periodo, con una serie de características, durante el cual una instancia de un bean existe en el contenedor de Spring y puede ser referenciado. De esta manera cuando accedemos a un bean de Spring, según cual sea su ámbito, puede que estemos accediendo a una nueva instancia, una instancia ya existente…

Para definir el ámbito en Spring se utiliza la anotación: @Scope(“ámbito”)

Los diferentes ámbitos de Spring son:

  • Singleton: Es el ámbito por defecto cuando se carga un Bean en el contenedor de Spring. Se crea una única instancia del bean, que será utilizada por cualquier otro bean que haga referencia a él.  Siempre que se utilice esta anotación, el Bean utilizado será la misma instancia.
  • Prototype: Especificamos que queremos una nueva instancia cada vez que se solicite el bean.
  • Request: Cada referencia a este bean será diferente para cada llamada HTTP.
  • Session: Para este ámbito, cada referencia a este bean será diferente para cada sesión HTTP. Un ejemplo de su uso puede verse aquí:

El código de este tutorial puede consultarse en el enlace.

Join the discussion 2 comentarios

Dejar un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies