Sunday, November 4, 2012

Spring foundations [ES]

 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 HibernateDaoSupportJdbcDaoSupport, JpaDaoSupport, SqlMapClientDaoSupport, TopLinkDaoSupport, etc.

No comments:

Post a Comment