Una de las múltiples características del framework Spring es la inyección de dependencias. Mediante la misma, podemos definir los beans que implementan la lógica de nuestras aplicaciones. De esta forma nos podemos olvidar de la gestión de los mismos puesto que Spring lo hará por nosotros.

Hay varias formas de definir nuestros beans:

  • Directamente los definimos en nuestro fichero de contexto de Spring (applicationContext.xml) mediante etiquetas <bean>. En la definición del mismo podemos asignarle al mismo otros beans  que hayamos definido o propiedades (tanto simples como complejas como listas o maps).


  • También podemos definirlos mediante anotaciones del tipo @Service(“nombreServicio”) en la propia clase de nuestro servicio. Lo único que deberemos añadir a nuestro fichero de contexto son las siguientes entradas para indicar a Spring en qué paquete encontrar las clases que contienen anotaciones.
    















Nuestra clase tendría un aspecto parecido al siguiente:


Una vez que hemos definidos nuestros beans debemos obtenerlos para ejecutarlos desde nuestra aplicación web. Hay diferentes formas de obtener los servicios dependiendo de donde queramos obtenerlos dentro de nuestra aplicación web:

  • Acceso genérico desde una aplicación Web.

  • Acceso desde un servlet. Primero debemos definir el servlet en nuestro applicationContext.xml e inyectarle los beans a los que queramos acceder desde el mismo.


Una vez hecho esto el bean se obtendrá de la siguiente forma:

  • Acceso desde un Job de Quartz. 

  • Acceso desde un contexto personalizado. Personalmente utilizo está forma cuando necesito acceder a un bean del contexto desde una simple clase Java, siendo esta clase la implementación de un Web Service. Lo primero que hago es crear una clase que representa mi contexto y que implementa la interfaz ApplicationContextAware. 


       Después definiremos este bean en nuestro fichero applicationContext.xml:


        Por último, obtenemos nuestro bean de la siguiente forma:






  • Acceso desde una pantalla Flex. También se puede invocar un servicio de Spring desde una pantalla de Flex, puesto que hay varios productos que integran Flex con Java. Algunos son de pago (Exadel Flamingo) y otros son gratuitos (BlazeDS). Primero lo definimos como un objeto remoto indicando sus métodos:


  


         Posteriomente lo podemos utilizar desde nuestro código en Action Script: