Understanding these content can help us reduce the size of the release package and also increase our understanding of the spring architecture.
Spring.jar: is a single jar package that contains a complete release module. But not including Mock.jar, Aspects.jar, Spring-portlet.jar, and Spring-hibernate2.jar. Spring-src.zip is all the source code compression package.
In addition to the Spring.jar file, Spring includes 21 other separate jar packages, each containing the corresponding Spring components, with users can choose to assemble their own jar packages according to their needs without having to introduce all the class files of the entire Spring.jar.
Spring-core.jar: This jar file contains the basic core tool classes of the spring framework. The other components of Spring use the classes in this package, which is the basic core of the others, and of course you can use them in your own application system.
Externally dependent Commons Logging, (log4j).
Spring-beans.jar: This jar file is used by all applications, including access to configuration files, creation and management of beans, and inversion of control/dependency injection (ioc/ DI) operations related to all classes. If the application requires only basic Ioc/di support, the introduction of Spring-core.jar and Spring-beans.jar files is possible.
Externally dependent Spring-core, (CGLIB).
Spring-aop.jar: This jar file contains the class and source-level metadata support required to use spring's AOP features in your app. Using the spring features based on AOP, such as declarative transaction management (declarative Transaction Management), also include this jar package in your application.
Externally dependent Spring-core, (Spring-beans,aop Alliance, Cglib,commons Attributes).
Spring-context.jar: This jar file provides a number of extensions to the spring core. You can find all the classes you need to use the Spring ApplicationContext feature, Jdni all the classes you need, instrumentation components, and related classes for validating validation.
Externally dependent Spring-beans, (SPRING-AOP).
Spring-dao.jar: This jar file contains all the classes of Spring DAO, Spring Transaction for data access. In order to use declarative transaction support, you also need to include Spring-aop.jar in your own application.
Externally dependent Spring-core, (SPRING-AOP, Spring-context, JTA API).
Spring-jdbc.jar: This jar file contains all of the classes that encapsulate spring's JDBC data access.
Externally dependent Spring-beans,spring-dao.
Spring-support.jar: This jar file contains support UI templates (Velocity,freemarker,jasperreports), mail Service, scripting Service (JRuby), Caching cache (EHCache), Task scheduling scheduling (Uartz)-related classes.
Externally dependent Spring-context, (SPRING-JDBC, Velocity, Freemarker, JasperReports, BSH, Groovy,jruby, Quartz, EHCache)
Spring-web.jar: This jar file contains the core classes required to use the spring framework when developing Web applications, including classes that automatically load Web application Context features, Struts and JSF integration classes, File upload support classes, Filter classes, and a large number of tool helper classes.
Externally dependent Spring-context, Servlet API, (JSP API, JSTL, Commons FileUpload, COS).
Spring-webmvc.jar: This jar file contains all the classes related to the Spring MVC framework. Includes framework for SERVLETS,WEB MVC Framework, controller and view support. Of course, if your app uses a stand-alone MVC framework, you don't need any classes in this jar file.
Externally dependent Spring-web, (spring-support,tiles,itext,poi).
Spring-portlet.jar: Spring's own implementation of a framework similar to spring MVC. Includes an MVC framework and controller.
Externally dependent Spring-web, Portlet API, (SPRING-WEBMVC)
Spring-struts.jar: Struts framework support makes it easier and easier to integrate the struts framework.
Externally dependent spring-web,struts.
Spring-remoting.jar: This jar file contains classes that support EJB, Remote call Remoting (RMI, Hessian, Burlap, Http Invoker, Jax-RPC).
External dependent SPRING-AOP, (SPRING-CONTEXT,SPRING-WEB,HESSIAN,BURLAP,JAX-RPC,EJB API).
Spring-jmx.jar: This jar package provides support classes for JMX 1.0/1.2.
Externally dependent SPRING-BEANS,SPRING-AOP, JMX API.
Spring-jms.jar: This jar package provides support classes for JMS 1.0.2/1.1.
Externally dependent SPRING-BEANS,SPRING-DAO,JMS API.
Spring-jca.jar: support for JCA 1.0.
Externally dependent Spring-beans,spring-dao, JCA API.
Spring-jdo.jar: support for JDO 1.0/2.0.
Externally dependent SPRING-JDBC, JDO API, (spring-web).
Spring-jpa.jar: support for JPA 1.0.
Externally dependent SPRING-JDBC, JPA API, (spring-web).
Spring-hibernate2.jar: support for Hibernate 2.1 is not recommended for use.
Externally dependent Spring-jdbc,hibernate2, (spring-web).
Spring-hibernate3.jar: support for Hibernate 3.0/3.1/3.2.
Externally dependent spring-jdbc,hibernate3, (spring-web).
Spring-toplink.jar: support for the TopLink framework.
Externally dependent Spring-jdbc,toplink.
Spring-ibatis.jar: support for Ibatis SQL maps.
Externally dependent Spring-jdbc,ibatis SQL Maps.
Spring-mock.jar: This jar file contains the spring set of mock classes to aid in the testing of the application. The Spring test suite uses a large number of these mock classes, which makes testing easier. Simulating the HttpServletRequest and HttpServletResponse classes is convenient for Web application unit testing. And it provides support for JUnit.
Externally dependent Spring-core.
Spring-aspects.jar: provides support for ASPECTJ so that aspect-oriented features can be easily integrated into the IDE, such as the Eclipse AJDT.
External dependency Weaver JARS (dist/weavers) description.
Spring-agent.jar: Spring's instrumentationsavingagent (for Instrumentationloadtimeweaver), a device agent package, can be refer to JDK1.5 's instrumentation function for more information.
External dependent none (for use at JVM Startup: "-javaagent:spring-agent.jar").
Spring-tomcat-weaver.jar: extends the classloader of Tomcat so that it can use the instrumentation (device) class.
External dependent none (for deployment into Tomcat ' s "server/lib" directory).
If you need to use the JSP language as a parameter to spring's Web MVC tags, you need support for JSP 2.0. Or choose Jakarta's JSTL (Standard.jar).
How to choose these packages and decide which ones to use is fairly straightforward. If you're building a web app and will use Spring all the way, it's best to use a single full Spring.jar file, if your app simply uses a simple inversion of control/dependency Injection (IOC/DI) container, then just Spring-core.jar and Spring-beans.jar is available, if you have a high size of the publication, then you have to choose carefully, only the jar file containing your own desired features. With A standalone release package you can avoid including all classes that your app doesn't need.
of course, you can use other tools to make the entire application package smaller, and the space-saving focus is to pinpoint the Spring dependent classes you need, and then merge the required classes and packages. Eclispe has a plug-in called Classpathhelper can help you find the class you depend on
Spring Configuration Jar Package detailed