¿Para que sirven los Spring Modules?

Acabamos de ver como usar Java equals y hashcode

Todos utilizamos los Spring Modules en las aplicaciones que desarrollamos utilizando Spring framework . Otra cosa muy distinta es que entendamos para que sirve cada módulo ya que nos descargamos del framework a través de Maven o Gradle . Si echamos un vistazo a una carpeta que incluya todas los jars descargados  por Spring veremos algo como lo siguiente:

¿Para que sirve cada uno de los jars que aparecen? . Vamos a comentar uno a uno.

Spring Modules y el contenedor

Spring Framework esta compuesto de diversos módulos y cada uno de estos módulos aporta una funcionalidad al framework. Los más importantes son los que pertenecen a lo que se llama el Spring Core Container:

spring-core-X.X.X :Este módulo es el encargado de implementar el código del IoC de Spring permitiendo inyectar beans etc.

spring-beans-X.X.X :Este módulo es el encargado de añadir las típicas Factorías como BeanFactory,  encargada de instanciar los distintos beans registrados en el framework.

spring-context-X.X.X :Este módulo es el encargado de añadir un contexto al framework y se encarga por ejemplo de simplificar la carga de los distintos recursos. Es en este package en el que nos encontramos el interface de ApplicationContext.

spring-context-support-X.X.X :Este módulo es el encargado de añadir las clases que gestionan servicios complementarios como Cache ,Mail, Quartz etc.

spring-expression-X.X.X :Este módulo es el encargado de añadir a Spring su Expresion Language para poder usarlo en los ficheros xml o anotaciones.

Spring Modules y persistencia

Los módulos más utilizados después del core de Spring  son los de acceso a la capa de persistencia.

spring-jdbc-X.X.X :Este módulo es el encargado de implementar el sistema de plantillas JDBC para simplificar la máximo el código de acceso a datos que utiliza este API.

spring-orm-X.X.X :Este módulo es el encargado de integrar JPA e Hibernate dentro de Spring Framework

spring-messaging-X.X.X :Este módulo es el encargado de integrar en el framework la funcionalidad de JMS.

spring-oxm-X.X.X :Este módulo es el encargado de integrar tecnologías XML como por ejemplo JAXB dentro del framework.

Spring Modules y la Web

Otros de los módulos que se utilizan mucho son los relacionados con la programación web y se agrupan de la siguiente forma:

spring-web-X.X.X :Este módulo es el encargado de integrar las aplicaciones web con Spring framework. Es el caso de  JSF  o antiguamente Struts.

spring-webmvc-X.X.X :Este módulo hace referencia a Spring MVC el framework web propio de Spring para desarrollo de aplicaciones web basadas en el modelo MVC.

spring-portlets-X.X.X :Este módulo es el encargado de integrar Spring con los sistemas de portales a través del desarrollo de tus propios Portlets.

spring-websockets-X.X.X :Este módulo es de reciente creación y se encarga de aportar a Spring framework las capacidades de WebSocket a nivel de servidor algo cada día más critico en HTML5.

Spring  Modules  y Aspect Oriented Programming

Los módulos más transversales de todos son los de Programación  Aspectual( AOP)

spring-aop-X.X.X :Este módulo es el encargado de aportar al framework las capacidades core de programación aspectual. Para ello implemente los interfaces y proxies necesarios.

spring-aspects-X.X.X :Este módulo hace referencia a los distintos aspectos que el framework implementa por defecto como son los aspectos de  Cache y Transacciones.

Otros Módulos

Por último quedan otros dos módulos que comentar , no por ello menos utilizados:

spring-instrument-X.X.X :Este módulo es el encargado de integrar capacidades de control e instrumentación dentro de Spring Framework utilizando Managed Bean para gestionar Spring vía JMX.

spring-test-X.X.X :Este módulo es el encargado del framework de Testing que Spring incluye para poder desarrollar con TDD.

Como podemos ver existen muchos módulos pero al final la funcionalidad de cada uno de ellos esta bastante bien definida.

Otros artículos relacionados:

Spring Singleton vs Prototype 

Spring Bean Validation