`
itroop
  • 浏览: 303680 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

分析Spring包依赖关系

阅读更多

《Pro Spring》分析Spring包依赖关系- -

 

http://macrochen.blogdriver.com/macrochen/1210951.html

Spring 拥有超过60个独立的依赖关系,Spring的完全下载包(译注:如spring-framework-x.x.x-with- dependencies.zip这样的下载包)提供了这些依赖关系。如果你打算从源码构建Spring,那么就得获取全部依赖关系。不过运行时的大部分 情况下你只需部分依赖关系,因此发布时只包含必需的依赖关系,即可令应用的尺寸减至最小。

由于依赖关系数量巨大,为便于管理Spring将它们分组归类。这些分组分别和发布包根目录的主lib文件夹子目录相对应。表 2-2对这些分组进行了说明,同时列出每组所含的JAR文件,并介绍了这些依赖关系的用途。

Table 2-2: Spring的依赖关系

依赖关系分组

JAR文件

说 明

ant

ant.jar, ant-junit.jar, ant-launcher.jar

Spring采用Apache Ant作为其构建工具,还用来完成大量其它任务如文档生成和测试执行等。运行时Ant根本不起作用,因此发布应用时无需包含该JAR文件。

aopalliance

aopalliance.jar

AOP Alliance(http://aopalliance.sourceforge.net/ ) 是个联合的开源协作组织,在多个项目间进行协作以期提供一套标准的AOP Java接口(interface)。 Spring AOP就是基于AOP Alliance标准API实现的。如果你打算使用Spring的AOP或基于AOP的任何特性,只需这个JAR文件。

axis

axis.jar, saaj.jar, wsdl4j.jar

Spring采用Apache Axis项目来支持Spring远程调用里的JAXRPC功能。如果使用JAXRPC Remoting,那么只需要这些文件。

caucho

burlap-2.1.12.jar, hessian-2.1.12.jar

Spring远程调用(remoting)对大量不同种类的协议包括Caucho的Burlap和Hessian提供了支持。要用哪个协议就包含这个分组里相应的JAR文件。

cglib

cglib-full-2.0.2.jar

CGLIB用来生成动态代理类(dynamic proxy classes),供核心DI和AOP实现之用。由于大量Spring功能的实现都要用到CGLIB,因此你的应用几乎总需包含CGLIB。

cos

cos.jar

COS 代表com.oreilly.servlet,是个实用类的集合,对 Servlets和基于web的应用很有用。Spring在两个地方要用到COS:文件上传处理和e-mail发送。不过在这两种情形中,COS都只是实 现选择之一,因此只有选用COS而非其它实现方法时,才需包含cos.jar。

dom4j

dom4j.jar

使用Hibernate时dom4j不可或缺,因此如果你的应用打算采用Hibernate实现ORM,就需要包含这个JAR文件。

easymock

easymock.jar, easymockclassextension.jar

Spring的测试套件用到了EasyMock,因此只有构建和运行测试套件时才用到这个JAR,无需随你的应用一起发布。

freemarker

freemaker.jar

Spring提供了FreeMarker模板引擎的包装类,还为把FreeMarker模板用作web应用的视图提供了支持。只要使用FreeMarker,就需要这个JAR文件。

hibernate

ehcache.jar, hibernate2.jar, odmg.jar

如果采用Spring的Hibernate集成和支持类,这些JAR文件不可或缺。如果使用其它ORM工具如iBATIS,则不需要这些JAR文件。如果使用Hibernate,则你的应用还要包含CGLIB JAR文件。

hsqldb

hsqldb.jar

Spring的示例应用使用了hsqldb.jar文件。

ibatis

ibatis-common.jar , ibatis-sqlmap.jar, ibatis-sqlmap-2.jar

使用Spring的iBATIS集成类时,这些文件不可或缺;如果使用JDBC或其它ORM工具如Hibernate或JDO,则你的应用不需要这些文件。

itext

itext-1.02b.jar

Spring使用iText提供web层的PDF支持。只有你的web应用需要生成PDF输出时才需包含这个JAR文件。

j2ee

activation.jar, connector-api.jar, ejb.jar, jaxrpc.jar, jdbc2_0-stdext.jar, jms.jar, jstl.jar, jta.jar, mail.jar, servlet.jar, xml-apis.jar

如 左侧所示,J2EE相关的各种不同JAR文件数量相当可观。如果你想要使用Spring 邮件支持的JavaMail实现,则需要activation.jar和mail.jar文件。要让Hibernate使用JCA Connector则需connector-api.jar,使用Spring的EJB支持则需要ejb.jar,jms.jar用于Spring的 JMS支持。对于web应用,如果想要使用Spring JSTL支持则需要servlet.jar和jstl.jar。Spring远程调用里的JAXRPC支持需要jaxrpc.jar文件,jta.jar 用于JTA事务支持。剩下两个JAR文件jdbc2_0-stdext.jar和xml-apis.jar分别用于JDBC和XML配置支持,不过只有你 使用1.3版本的JVM时才需要它们。

jakarta

jakarta-commons commons-attributes-api.jar, commons-attributes-compiler.jar, commons-beanutils.jar, commons-collections.jar, commons-dbcp.jar, commons-digester.jar, commons-discovery.jar, commons-fileupload.jar, commons-lang.jar, commons-logging.jar, commons-pool.jar, commons- validator.jar

Spring 使用了来自Jakarta Commons项目的大量组件。如果你想在应用中使用源码级元数据(metadata),就需要commons-attributes-api.jar, 此外还需要commons-attributes-compiler.jar,以便将attributes编译到应用里。Struts要用到 BeanUtils、Collections、Digester、Discovery,和Validator JAR文件,其中的Collections,Hibernate也会用到。使用DBCP连接池时,Spring JDBC支持要用到DBCP,Pooling则对有些示例应用不可或缺。如果想使用相应的Spring包装类来处理web应用的文件上传,则需要 FileUpload。最后,Spring处处用到了Logging,因此需在所有基于Spring的应用里包含这个JAR文件。

jakarta-taglibs

standard.jar

这是Jakarta的JSTL实现,一些Spring示例应用使用了这个实现。

jboss

jboss-common-jdbc-wrapper.jar

运行在JBoss应用服务器上的应用使用Spring的JDBC类时,这个JAR文件不可或缺。

jdo

jdo.jar

提供Spring的JDO支持。

jdom

jdom.jar

在Spring里使用iBATIS 1.3时,JDOM不可或缺。本章介绍的iBATIS版本为2.0。

jotm

jotm.jar, xapool.jar

如果你打算配合Spring事务抽象层一起使用JOTM,jotm.jar文件不可或缺。如果打算在自己的应用里将XAPool用于连接池(connection pooling),则只需xapool.jar。

junit

junit.jar

运行时根本不需要JUnit;它只用来构建和运行测试套件。

log4j

log4j-1.2.8.jar

如果想要使用Spring配置log4j日志记录,这个文件不可或缺。

poi

poi-2.5.jar

这个JAR可令Spring MVC框架支持Microsoft Excel输出。

quartz

quartz.jar

Spring基于Quartz的调度支持需要该JAR。

regexp

Jakarta-oro-2.0.7.jar

使用正则表达式来指定AOP的切入点(pointcut)时需要这个JAR。第六章有更详细的介绍。

struts

struts-1.1.jar

欲配合Spring使用Struts构建web应用,Struts JAR必不可少。

velocity

velocity-1.4.jar, velocity-tools-generic-1.1.jar

Spring 提供了Velocity的包装类使其支持DI,同时当你在应用中使用 Velocity时,还可减少需要编写的代码量。除此之外,Spring还提供了一些类,支持将Velocity用作web层里的视图提供者(view provider)。只要使用了上述任意特性,都需在发布里包含Velocity JAR文件。

xdoclet

xjavadoc-1.0.jar

Commons Attributes用这个JAR解析源代码文件,然后提取属性信息。如果使用了Spring Commons Attributes支持,须包含该JAR文件。

如 上所述,Spring的依赖关系种类繁多,对于大部分应用来说,你只需上面整个依赖集的一部分。因此值得我们花些时间准确挑选出所需依赖关系,只将它们添 加到应用中。这样一来,你就可以控制应用的大小;这点对那些需要频繁把应用部署到远程地址的人员而言特别受用。如果你打算通过Web向人们发布自己的应 用,同时他们可能受困于糟糕的下载速度,那么保证应用尽可能的小就变得尤为重要。

分享到:
评论

相关推荐

    spring 3 依赖包_part3

    Spring 3 依赖包是Java开发中至关重要的组成部分,它为开发者提供了丰富的功能,支持了面向切面编程(AOP)、依赖注入(DI)以及IoC容器等核心特性。在这个"spring 3 依赖包_part3"中,包含了多个第三方库,这些库在...

    spring 源码 依赖 jar包

    在分析源码时,首先应理解Spring的IoC机制,即控制反转,它是通过XML配置或注解方式来声明bean及其依赖关系,Spring容器负责管理这些bean的生命周期。然后,深入AOP模块,学习如何定义切面、通知类型以及如何织入切...

    Spring框架jar包之间的依赖关系(详细图解)

    在描述中提到的PowerDesigner源文件可能是用来设计和分析Spring框架中各jar包的依赖关系的,这是一种常见的建模工具,可以帮助开发者更好地理解复杂系统的结构。图片"Spring框架jar依赖关系.jpg"和".png"应该是展示...

    Gradle-spring依赖包依赖包

    当我们谈论"Gradle-spring依赖包依赖包"时,意味着我们需要理解如何在Gradle中管理和配置Spring框架的依赖。 首先,让我们深入了解一下Gradle的依赖管理。Gradle使用Groovy或Kotlin DSL编写构建脚本,这些脚本允许...

    spring依赖包

    通过容器管理对象的生命周期和依赖关系,使得代码更加解耦,便于测试和维护。 2. **Spring Beans**: 它定义了如何配置和管理对象,这些对象被称为"bean"。XML配置文件或者Java配置类可以用来定义bean及其依赖关系。...

    spring-session+spring的依赖包

    - Maven是Java项目管理和构建工具,通过POM(Project Object Model)文件管理项目的依赖关系,简化构建过程。 - 在这个演示项目中,Maven被用来构建和管理项目,包括引入Spring Session和Redis相关依赖,以及配置...

    spring 3 依赖包_4

    Spring 3 依赖包是Java开发中至关重要的组件,它为构建企业级应用程序提供了全面的框架支持。这个压缩包集合包含了大量的子包和模块,旨在简化开发过程并提高代码的可维护性。在这个"spring 3 依赖包_4"中,我们可以...

    spring依赖注入三种方式 测试源码

    本文将深入探讨Spring中的三种依赖注入方式,并结合源码分析其工作原理。 1. **构造器注入** 构造器注入是通过构造函数来传递依赖对象的。当创建一个类的新实例时,Spring容器会调用带有所需参数的构造函数,从而...

    spring源码包.zip

    首先,`spring-context`模块是Spring框架的基石,它提供了一个上下文环境,用于管理Bean及其依赖关系。该模块包含了Spring的核心特性,如IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖...

    Spring 控制反转 依赖注入

    Spring的IoC容器主要由`org.springframework.beans.factory`和`org.springframework.context`包下的类组成,如`DefaultListableBeanFactory`和`ApplicationContext`。通过源码分析,我们可以了解如何解析配置、创建...

    Spring2.5.6开发依赖包最全最好完整版

    1. **依赖注入**:Spring框架中最基础且核心的功能之一,用于管理对象之间的依赖关系。 2. **面向切面编程(AOP)**:通过代理机制实现对特定行为(如日志记录、权限控制等)的封装,使得这些行为可以独立于业务逻辑...

    spring依赖注入的实现原理

    这样可以使得对象间的依赖关系更加清晰,同时使对象更容易被测试和复用。 二、Spring依赖注入的实现方式 1. **setter方法注入**:Spring通过调用对象的setter方法来设置其依赖的实例。在bean配置文件中,使用`...

    Spring学习笔记(6)----编码剖析Spring依赖注入的原理

    在解析XML配置文件或处理Java配置类时,Spring会创建一个BeanDefinition对象,它包含了bean的所有元信息,如类名、依赖关系、初始化方法等。对于`@Autowired`的处理,Spring在Bean实例化后会执行一个称为“依赖解析...

    spring依赖注入例子

    这样可以提高代码的可测试性和可维护性,因为对象的依赖关系变得松耦合。 在Spring中,依赖注入可以通过XML配置、注解或Java配置实现。本例子主要关注基于注解的依赖注入,这是一个现代且更简洁的方法。 首先,让...

    Spring_依赖注入_面向接口编程

    依赖注入(DI)是Spring框架的核心特性之一,它允许我们把对象的依赖关系从代码中解耦出来,转而由Spring容器来管理。在传统的编程模式中,对象通常自行创建和管理它们所依赖的对象,但在Spring中,这些依赖是由外部...

    Spring 5.2.9的IOC核心jar包

    通过配置文件或者注解,开发者可以定义对象及其依赖关系,Spring容器会自动管理这些对象的生命周期,包括实例化、初始化、装配和销毁。 **Bean** 在Spring中,业务逻辑的组件被称为Bean。Bean是Spring容器管理的...

    Tom_深入分析Spring源码doc

    本篇文章将针对“Tom_深入分析Spring源码doc”中的关键知识点进行详细的阐述。 1. **依赖注入(Dependency Injection,DI)** Spring的核心特性之一就是依赖注入,它使得组件间的依赖关系由Spring容器管理,而不是...

    spring源码缺失的jar包

    总的来说,理解和研究Spring源码需要对Spring框架的核心概念有深入的了解,同时,确保正确配置和管理依赖关系是成功构建和运行源码的关键。通过这种方式,你可以更好地学习Spring的内部机制,提升你的编程技能。

    spring辅助资源包

    Spring IoC容器是整个框架的基础,它负责管理对象的生命周期和依赖关系。 在开发过程中,正确地导入这些辅助资源包对于确保Spring框架的完整功能至关重要。例如,缺少CGLIB可能导致AOP功能失效,没有ASM则会影响...

    Java_Jar Analyzer 一个JAR包分析工具批量分析搜索方法调用关系搜索字符串搜索Spring分析CFG.zip

    通过此工具,开发者可以快速查看JAR包内的所有类及其依赖关系,便于代码管理和维护。 二、方法调用关系搜索 在软件开发中,理解方法间的调用关系是调试和优化的关键。Java_Jar Analyzer 提供了方法调用分析功能,...

Global site tag (gtag.js) - Google Analytics