Spring
Uso de Spring Framework en ataStore
Spring Framework
Spring es un framework de integración.
Está compuesto por múltiples módulos (MVC, Data, AOP, etc.) que permiten juntar diversas tecnologías de manera sencilla.
La documentación de Spring 3 podemos consultarla en http://static.springsource.org/spring/docs/3.0.x/reference/
Inversión de control
El funcionamiento de Spring se fundamenta en el principio de inversión de control o inyección de dependencias.
Este principio consiste en que las clases Java no tengan determinadas dependencias en tiempo de compilación, siendo el contenedor (en este caso Spring) quien satisface las dependencias en tiempo de ejecución.
Por ejemplo, en el siguiente código es el controlador ProductController quien crea la clase ProductDAO:
public class ProductController { public void save(Product product) { ProductDAO productDAO = new ProductDAO(); productDAO.save(product); ... } }
Sin embargo, en el ejemplo siguiente sólo declaramos la variable productDAO y es Spring quien en tiempo de ejecución la rellena:
public class ProductController { @Autowired private ProductDAO productDAO; public void save(Product product) { productDAO.save(product); ... } }
Otro ejemplo de inyección de dependencias lo podemos ver en la inyección de recursos JNDI por parte de un servidor de aplicaciones web.
Con la inyección de dependencias, conseguimos reducir el acoplamiento entre diversos módulos, lo que hace que el código sea más fácil de testear y modificar.
No es necesario sustituir todas las dependencias entre clases mediante inyección porque haría demasiado compleja la configuración, lo adecuado es tener dependencias dentro de cada capa (web, negocio, integración...) pero no tener dependencias entre capas.
Configuración
Spring se añade a una aplicación web a través del descritor web web.xml y se configura mediante archivos XML. En nuestro caso, los archivos de configuración los hemos puesto en la carpeta WEB-INF/spring. El archivo principal es servlet-context.xml.