Los principales fundamentos de Spring son:
- inyección de dependencias
- inversión de control (IoC)
- programación orientada a aspectos (AOP)
- integración con frameworks de terceros
La inyección de dependencias consiste en poder cambiar implementaciones de clases concretas de manera transparente sin modificar directamente el código que estamos utilizando. Esto se consigue mediante una programación basada en interfaces.
Supongamos que estamos implementando un servicio que contiene una interfaz DAO que realiza persistencia de datos. Imaginemos que la implementación de este DAO usa Hibernate para hacer la persistencia. Si en un momento dado quisiéramos cambiar ese DAO por otro que utilice i-BATIS, deberíamos quitar la implementación anterior para poner la nueva, es decir, inyectarle esa dependencia. En Spring esto se realiza muy fácilmente con el IoC Container. En este ejemplo sólo deberíamos modificar un XML para indicarle cual es la nueva clase que implementa el DAO con i-BATIS. En cambio no tendríamos que tocar ninguna clase Java para obtener el resultado.
La inversión de control (IoC) básicamente supone que el programador no tiene que crear
nuevas instancias de clases que necesita con el operador new. Al utilizar interfaces
no debemos preocuparnos de cómo y cuando se crean. Nosotros sólo tenemos que
definir en un XML los beans que
necesitamos indicando su implementación concreta y otras propiedades. El
contenedor de Spring sabrá cuando y como instanciar las implementaciones que se
necesiten.
La integración de Spring con otros frameworks consiste en que la reutilización
del código, sobre todo si es bueno. Spring
es un framework muy flexible y no trata de reinventar la rueda, si existen
soluciones a problemas desarrolladas con diferentes tecnologías Spring permite
adoptarlas y usarlas.
Por ejemplo imaginemos que estamos trabajando
en la capa de persistencia y estamos desarrollando un DAO. Spring nos proporciona una clase abstracta DaoSupport que podríamos extender para hacer nuestro
propio DAO. Pero si nosotros queremos
trabajar con un algún framework de persistencia de datos concreto, Spring
también nos proporciona clases abstractas para poder utilizarlos. Por ejemplo, existen
las clases abstractas HibernateDaoSupport, JdbcDaoSupport, JpaDaoSupport, SqlMapClientDaoSupport,
TopLinkDaoSupport, etc.
No comments:
Post a Comment