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:
I recomend in your PDF add Url and name of your web page
thanks 🙂
Cecilio una consulta, he visto casos que algunos lugares que prefieren usar lo que es el standard JEE7 en en el desarrollo sin spring, he visto comentarios que la razón es para que el sistema sea mas liviano y pienso tal vez sea correcto o no. Cual seria tu opinión sobre ello?. Tambien con la llegada de lo que seria el MVC 1.0 es posible que todos migren del Spring MVC al de standard?.
Saludos.
Yo creo que lo que suele ser más liviano es la gestión ya que el servidor te lo aporta casi todo , en Spring Framework hay más flexibilidad pero te lo tienes que organizar más tu. Es posible con con MVC 1.0 haya gente que migre a EJBs pero también el problema viene por la parte de microservicios en la cual los EJB encajan mal a día de hoy y habrá que ver como evolucionan
Buenas noches Cecilio, por favor me puedes indicar porque los ejbs encajan mal en microservicios, gracias
He escrito un artículo de ello 🙂 lo acabo de publicar
breve, preciso, conciso…gracias por la explicación 😉
gracias 🙂
El manejo de conceptos es muy importante, tambien conocer la forma en la que trabaja una tecnología. Muchas veces nos vemos obligados a abordar una tecnologia como Spring y aprendemos de la forma “hago esto sucede esto” que no es lo más correcto, y muchas veces nos impide aprovechar el potencial del framework.
Gracias por el aporte!!
de nada 🙂