All,
I am starting with Spring and got the Spring 3.0.5 distribution.
I see the following jars:
- org.springframework.aop-3.0.5.RELEASE.jar
- org.springframework.asm-3.0.5.RELEASE.jar
- org.springframework.aspects-3.0.5.RELEASE.jar
- org.springframework.beans-3.0.5.RELEASE.jar
- org.springframework.context.support-3.0.5.RELEASE.jar
- org.springframework.context-3.0.5.RELEASE.jar
- org.springframework.core-3.0.5.RELEASE.jar
- org.springframework.expression-3.0.5.RELEASE.jar
- org.springframework.instrument.tomcat-3.0.5.RELEASE.jar
- org.springframework.instrument-3.0.5.RELEASE.jar
- org.springframework.jdbc-3.0.5.RELEASE.jar
- org.springframework.jms-3.0.5.RELEASE.jar
- org.springframework.orm-3.0.5.RELEASE.jar
- org.springframework.oxm-3.0.5.RELEASE.jar
- org.springframework.test-3.0.5.RELEASE.jar
- org.springframework.transaction-3.0.5.RELEASE.jar
- org.springframework.web.portlet-3.0.5.RELEASE.jar
- org.springframework.web.servlet-3.0.5.RELEASE.jar
- org.springframework.web.struts-3.0.5.RELEASE.jar
- org.springframework.web-3.0.5.RELEASE.jar
I want to know which jar is meant for which module of Spring (ORM, Core, MVC, AOP etc).
So that I can choose the correct set of jars for my project.
Is there a reference somewhere that explains each jar and it's use correctly?
Best Answer
There is a following chart (from Diagram of Spring 3.0 module dependencies):
As you can see, there are several groups of modules:
"Core Spring" -
context
and its dependencies (asm
is missed,aop
depends on it)Web
web
- basic webapp integrationwebmvc
(web.servlet
) - Spring MVC Frameworkwebmvc-portlet
(web.portlet
) - Spring MVC for portletsweb.struts
- Struts integrationData access
tx
(transaction
) - basic transaction supportjdbc
- JDBC supportorm
- ORM integrationOther modules
context-support
- integration with Quartz, Javamail, Ehcache, etcjms
,oxm
- JMS and object-XML mapping respectivelytest
- for unit testingaspects
- AspectJ intergration (usually not needed)instrument
,instrument.tomcat
- load-time weavingSo, if you use build tool that supports transitive dependencies (such as Maven), you usually only need to declare the required modules from web and data groups, and some from the other modules, if needed. Also you may need to declare
context
in order to configure logging.For example, if you want to create a web application with Spring MVC and Hibernate, you declare
webmvc
(web.servlet
) andorm
. If you don't use Maven, you also need to import their transitive dependencies, as shown on the chart.See also: