spring相关jar包简介
JAVA生成(可执行)Jar包的全面详解说明[打包][SpringBoot][Eclips。。。
JAVA⽣成(可执⾏)Jar包的全⾯详解说明[打包][SpringBoot][Eclips。。。
⾟苦所得,转载还请注明:
得空整理了关于java 开发中,所有打包⽅式的⼀个操作⽅法, 有基于IDE的,有基于构建⼯具的.
这⾥还是⽐较建议新⼿朋友尽快习惯 maven 和 gradle 等构建⼯具⾃带的打包⽅式. 不是说逼格⾼,的确是因为不依赖 IDE, 配置好⼀两⾏命令就搞定. 离开IDE 照样出包.
⼤概分为这⼏个步骤
⼀. 关于Jar 包(example.jar) 的结构/作⽤/使⽤说明
⼆. 不依赖IDE和构建⼯具⽣成⼀个简单的 Jar 包
依赖编译器
三. 基于IDE( Eclipse /IDEA)⽣成 jar 包
四. 基于IDE( Eclipse /IDEA)⽣成可执⾏ jar 包
只依赖构建⼯具
五. 基于Maven ⽣成 Jar 包[第三⽅依赖包和代码⽂件放在⼀起, 为⼀个包] [fat-jar]
六. 基于Maven ⽣成 Jar 包[分离第三⽅依赖包, 独⽴存放在 *_libs 中][推荐]
七. 基于Gradle ⽣成 Jar 包 [第三⽅依赖包和代码⽂件放在⼀起, 为⼀个包] [fat-jar]
⼋. 基于Gradle ⽣成 Jar 包 [分离第三⽅依赖包, 独⽴存放在 *_libs 中]
注意事项:
1. 项⽬均为简单项⽬,不存在不懂得情况,代码相关废话不说;
2. 第三条中的项⽬,是⼀个简单的⼯具类集合.(就是把⼯具类打成⼀个JAR 包,⽅便其他项⽬使⽤,如我们使⽤的⼤多数第三⽅类库)
3. 第四五六七⼋条中的项⽬均为同⼀个简单的SpringBoot项⽬,构建⽅式不同⽽已\
SpringBootjava-jar命令行启动原理解析
SpringBootjava-jar命令⾏启动原理解析
在spring boot⾥,很吸引⼈的⼀个特性是可以直接把应⽤打包成为⼀个jar/war,然后这个jar/war是可以直接启动的,⽽不需要另外配置⼀个Web Server。那么spring boot如何启动的呢?今天我们就来⼀起探究⼀下它的原理。⾸先我们来创建⼀个基本的spring boot⼯程来帮助我们分析,本次spring boot版本为 2.2.5.RELEASE。
// SpringBootDemo.java
@SpringBootApplication
public class SpringBootDemo {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemo.class);
}
}
下⾯是pom依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>springboot-demo</finalName>
<plugins>
Spring核心技术详解
Spring核⼼技术详解
⼀、Sring简介
Spring是⼀个分层的Java SE/EE应⽤⼀站式的轻量级开源框架。Spring核⼼是IOC和AOP。
Spring主要优点包括:
⽅便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进⾏控制,避免硬编码造成的程序耦合度⾼。
AOP编程的⽀持,通过Spring提供的AOP功能,⽅便进⾏⾯向切⾯编程。
声明式事务的⽀持,在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活地进⾏事务的管理,提⾼开发效率和质量。
⽅便程序的测试,可以⽤⾮容器依赖的编程⽅式进⾏⼏乎所有的测试⼯作。
⽅便集成各种优秀框架,Spring提供了对各种优秀框架的直接⽀持。
⼆、Spring体系结构
如下图所⽰,整个spring框架按其所属功能可以划分为五个主要模块,这五个模块⼏乎为企业应⽤提供了所需的⼀切,从持久层、业务层到表现层都拥有相应的⽀持,这就是为什么称Spring是⼀站式框架的原因。
核⼼模块(Core Container)
Spring的核⼼模块实现了IoC的功能,它将类和类之间的依赖从代码中脱离出来,⽤配置的⽅式进⾏依赖关系描述。由IoC容器负责类的创建,管理,获取等。BeanFactory接⼝是Spring框架的核⼼接⼝,实现了容器很多核⼼的功能。
Context模块构建于核⼼模块之上,扩展了BeanFactory的功能,包括国际化,资源加载,邮件服务,任务调度等多项功能。ApplicationContext是Context模块的核⼼接⼝。
SpringBoot如何通过java-jar启动
SpringBoot如何通过java-jar启动
⽬录
Pre
引导
新建⼯程打包启动
java -jar ⼲啥的
打包插件
spring-boot-maven-plugin简介
包结构
Archive的概念
JarFile
JarLauncher⼯作流程
⼩结
Pre
⼤家开发的基于Spring Boot 的应⽤,jar形式,发布的时候,绝⼤部分都是使⽤java -jar 启动。得益于Spring Boot 的封装,再也不⽤操⼼搭建tomcat等相关web容器le , ⼀切变得⾮常美好,那SpringBoot是怎么做到的呢?
引导
新建⼯程打包启动
我们新创建⼀个Spring Boot的⼯程
其中打包的配置为
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
先打包⼀下
查看target⽬录
然后启动
java -jar ⼲啥的
我们先看看 java -jar ⼲了啥?
在oracle官⽹找到了该命令的描述:
If the -jar option is specified, its argument is the name of the JAR file containing class and resource files for the application. The startup class must be indicated by the Main-Class manifest header in its source code.
SpringBoot的jar包如何启动的实现
SpringBoot的jar包如何启动的实现
⽬录
⼀、简介
⼆、jar包的内部结构
三、加载过程
1.使⽤到的⼀些类
2.过程分析
四、总结
⼀、简介
使⽤过SprongBoot打过jar包的都应该知道,⽬标⽂件⼀般都会⽣成两个⽂件,⼀个是以.jar的包,⼀个是.jar.original⽂件。那么使⽤SpringBoot会打出两个包,⽽.jar.original的作⽤是什么呢?还有就是java -jar是如何将⼀个SpringBoot项⽬启动,之间都进⾏了那些的操作?
其实.jar.original是maven在SpringBoot重新打包之前的原始jar包,内部只包含了项⽬的⽤户类,不包含其他的依赖jar包,⽣成之后,SpringBoot重新打包之后,最后⽣成.jar包,内部包含了原始jar包以及其他的引⽤依赖。以下提及的jar包都是SpringBoot⼆次加⼯打的包。
⼆、jar包的内部结构
SpringBoot打出的jar包,可以直接通过解压的⽅式查看内部的构造。⼀般情况下有三个⽬录。
BOOT-INF:这个⽂件夹下有两个⽂件夹classes⽤来存放⽤户类,也就是原始jar.original⾥的类;还有⼀个是lib,就是这个原始jar.original引⽤的依赖。
META-INF:这⾥是通过java -jar启动的⼊⼝信息,记录了⼊⼝类的位置等信息。
org:Springboot loader的代码,通过它来启动。
这⾥主要介绍⼀下/BOOT-INF/MANIFEST.MF⽂件
Main-Class: org.springframework.boot.loader.JarLauncher
springboot打jar包将引用的第三方包、配置文件(.properties、.xml。。。
springboot打jar包将引⽤的第三⽅包、配置⽂件(.properties、
.xml。。。
1、外置配置⽂件
Springboot读取核⼼配置⽂件(.properties)的外部配置⽂件调⽤⽅式为
jar包当前⽬录下的/config⽬录
因此要外置配置⽂件就在jar所在⽬录新建config⽂件夹,然后放⼊配置⽂件。
2、外置其他资源配置⽂件
项⽬中我们会⽤到xml来实例bean、定时任务、⽇志(使⽤springboot集成⽇志插件⽆需引⼊)等,因此需要引⼊对应的xml,步骤1中我们在jar包同级⽬录下新建了config⽂件夹,所以这些乱七⼋糟的东西都放在config⽂件夹下,想要调⽤他们⾸先我们要找到config⽂件夹的路径,好的⽅法没找到,只能⽤笨办法了,就是在配置⽂件中增加⼀条配置,配置config⽂件夹所在的⽬录。
springboot.jar.path=D:/stsworkspace/springboot_to_jar/target/config
3、外置引⼊的第三⽅jar包
通常第三⽅jar包打进jar包⾥,但是导致程序jar资源过⼤,所以也可以和步骤1⼀样,在项⽬jar包同级⽬录下新建lib⽂件夹,⽤于存放第三⽅jar,这个只需要在pom.xml打包时候,打包插件分离出来就可以了。
4、外置静态资源
静态资源访问采⽤thymeleaf,在配置⽂件中将spring.thymeleaf.prefix配置成外部地址。
切记外部资源引⽤格式:file:xxx/xxx/xx
关注公众号输⼊‘springboot’获取完整⽂章
常见jar包详解
常见jar包详解
jar包⽤途
axis.jar SOAP引擎包
commons-discovery-0.2.jar⽤来发现、查找和实现可插⼊式接⼝,提供⼀些⼀般类
实例化、单件的⽣命周期管理的常⽤⽅法.
jaxrpc.jar Axis运⾏所需要的组件包
saaj.jar创建到端点的点到点连接的⽅法、创建并处理SOAP消
息和附件的⽅法,以及接收和处理SOAP错误的⽅法. wsdl4j-1.5.1.jar Axis运⾏所需要的组件包
activation.jar JAF框架的jar包
annotations-api.jar使⽤注解所需jar
ant.jar⽤于⾃动化调⽤程序完成项⽬的编译,打包,测试等aopalliance-1.0.jar⽀持Spring AOP
asm-2.2.3.jar ASM字节码库
asm-commons-2.2.3.jar ASM字节码库
asm-util-2.2.3.jar Java字节码操纵和分析框架
aspectjrt.jar处理事务和AOP所需的包
aspectjweaver.jar处理事务和AOP所需的包
axiom-api-1.2.7.jar Axis 对象模型
axiom-impl-1.2.7.jar Axis 对象模型
bcprov-jdk15-140.jar基于java1.5 的加密算法实现
bfmclientmodel.jar使⽤WebSphere所需jar包
bpcclientcore.jar使⽤WebSphere所需jar包
bpe137650.jar提供远程访问BPE容器的实现。
JAR包介绍大全用途作用详解JAVA
jta.jar 标准JTA API必要commons-collections.jar 集合类 必要antlr.jar ANother Tool for Language Recognition 必要asm.jar ASM字节码库 如果使用“cglib” 则必要asm-attrs.jar ASM字节码库 如果使用“cglib” 则必要ehcache.jar EHCache缓存 如果没有其他的缓存,则是必要的cglib.jar CGLIB字节码解释器 如果使用“cglib” 则必要commons-beanutils.jar 提供对java反射和自省API的包装 对bean操作的类,可以访问类的属性及get和set方法commons-digester.jar Digester基于规则的XML文档解析,主要用于XML到java对象的映射commons-lang.jar 包含了一些数据类型工具类,是ng.* 的扩展 必须使用的包commons-pool.jar,commons-dbcp.jar DBCP数据库连接池,Apache的Jakarta组织开发的,Tomcat4的连接池也是DBCPcommons-chain.jar Jakarta Commons的子项目Chain将上述两个模式组合成一个可复用的Java框架用于描述顺序的处理流程 strutsheShale应用框架作为处理HTTP请求处理的基础机制commons-validator.jar 用来帮助进行验证的工具。比如验证Email字符串,日期字符串等是否合法。Burlap.jar 支持ejb,远程调用Remoting方面的类buffalo.jar 处理xml的jar包commons-betwixt.jar 用xml生成报表时需要用到的包commons-el.jar Apache 组织中一个用来解析 JSP 2.0 的表达式语言的 Java htmlparser.jar 是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html类库jakarta-oro.jar java正则表达式所需的包jaxen.jar 在jdom中使用xpath需要导入jaxen.jar包mina-core.jar Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架这里主要介绍的是Hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍。 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包 dom4j.jar: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。我早在将
JAR包介绍大全用途作用详解JAVA
JAR包介绍大全用途作用详解JAVA
JAR(Java Archive)是Java的一种标准压缩文件格式,它是一种将
多个Java类文件、资源文件、配置文件和元数据文件打包成一个文件的
方式。JAR包的使用具有很多作用和用途,下面将详细介绍。
1. 代码打包和发布:通过将Java类文件打包成JAR包,可以方便地
将整个项目的代码进行打包和发布。这样可以简化代码的传输、分发和部署。
2. 代码模块化:JAR包可以将一组相关的Java类打包成一个模块,
便于代码的管理和维护。不同的模块可以根据需要进行组合,提高代码的
可复用性和可扩展性。
3.应用程序部署:将应用程序的所有依赖的类和资源文件统一打包到
一个JAR包中,方便进行部署和发布。可以减少部署过程中的错误和问题。
4. 库文件管理:JAR包可以用来管理和分发Java库文件。开发者可
以将常用的库文件打包成JAR包,并在其他项目中使用。
5. 类库扩展:在Java中,可以通过类路径(CLASSPATH)来指定需
要加载的类库。而JAR包可以通过设置类路径来扩展Java的类库。只需
将JAR包加入到类路径中,就可以在代码中使用其中的类和方法。
6.版本管理:JAR包可以用来管理和分发不同版本的软件。通过使用
不同的JAR包命名规则或目录结构,可以区分不同版本的软件,方便用户
选择特定版本的功能和功能。
7.防止类文件冲突:当使用多个第三方类库时,可能会发生类文件冲突的情况。通过将每个类库打包成一个JAR包,并且每个类库中的类在包的结构中唯一,可以避免类文件冲突的问题,保证程序的正确运行。
SpringBoot引入第三方jar包或本地jar包的处理方式
SpringBoot引⼊第三⽅jar包或本地jar包的处理⽅式在开发过程中有时会⽤到maven仓库⾥没有的jar包或者本地的jar包,这时没办法通过pom直接引⼊,那么该怎么解决呢
⼀般有两种⽅法
第⼀种是将本地jar包安装在本地maven库
第⼆种是将本地jar包放⼊项⽬⽬录中
这篇⽂章主要讲第⼆种⽅式,这⼜分两种情况,⼀种是打包jar包,第⼆种是打包war包
jar包
先看看jar包的结构
⽤压缩⼯具打开⼀个jar包
打包后jar包的路径在BOOT-INF\lib⽬录下
在项⽬⽬录中创建个⽂件夹⽤来存放jar包
pom⽂件中加⼊如下内容
<dependency>
<groupId>com.ckfinder</groupId>
<artifactId>json-lib</artifactId>
<version>2.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/jar/json-lib-2.3-jdk15.jar</systemPath>
</dependency>
groupId,artifactId,version可随便写
这时候在项⽬中运⾏是没问题了,但是使⽤命令mvn clean package打包之后BOOT-INF\lib⾥⾯并没有json-lib-2.3-jdk15.jar包,还需要pom⽂件中做如下配置:<plugin>
spring jar 包详解
下载的spring包中文件及各种包众多,在项目中往往只有部分是我们必须的,如果不清楚什么时候需要什么包的话,看看下面就知道了。
aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件。Aspectj是java 最早的提供AOP的应用框架。
dist 目录下是 Spring 的发布包,关于发布包下面会详细进行说明。
docs 目录下是相关的文档,包括有Spring api 的javadoc、reference 参考指南、Spring 的标签库使用文件及Spring MVC 的MVC-step-by-step 讲解与示例。都是很好的文档,值得好好研究一下。
lib 目录下是Spring 所依赖的第三方开源包。
mock 目录下是 Spring 辅助应用测试的Mock 源程序。
samples 目录下是 Spring 的示例源程序及简单的webapp 示例框架的示例配置,值得好好学习的有jpetstore 及petclinic,当然其它的countries、imagedb、tiles-example 也可以好好参考一下。
src 目录下是Spring 的源程序。
test 目录下Spring 的单元测试源程序。
tiger 目录下是针对在Spring框架中使用java 1.5的源程序及测试程序。Tiger是jdk 1.5版本的开发代号。
接下来详细说说dist 目录下jar 包的相关内容。了解这些内容有助于我们减小发布包的大小,同时也可以增加对Spring架构的了解。
spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。
springPomjar包版本管理
springPomjar包版本管理 新建⼀个项⽬,pom默认是以下的样⼦
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
关于springboot启动所需所有jar包详解
关于springboot启动所需所有jar包详解
由于公司内⽹⽆法连接外⽹,且我们有⾃⼰的maven仓库。所以在建⽴springboot框架时,⽆法使⽤spring官⽹提供的 <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
</parent>
所以需要⾃⼰⼿动将springboot所需的所有jar包导⼊的本地仓库中。
闲话莫提,⾔归正传。所有jar包⽬录如下,
就不传⽹盘了。
ps:⾃⼰本地搭建springboot环境时,如遇各种错误,⼀定是jar包缺失。深有体会。
Springboot项目java-jar启动jar包参数详解
Springboot项⽬java-jar启动jar包参数详解
命令实例:
nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=daily -verbose:class &
说明:
--spring.profiles.active=daily,这个可以在spring-boot启动中指定系统变量,多环境(测试、预发、线上配置)的区分
在排查jar包冲突时,可以指定启动的-verbose:class 打印出启动的应⽤实际加载类的路径,来排查来源。
jvm堆设值: -Xms500m -Xmx500m -Xmn250m -Xss256k
nohup 不挂断地运⾏命令;& 在后台运⾏,⼀般两个⼀起⽤。 eg:nohup command &
-server:服务器模式,在多个CPU时性能佳,启动慢但性能好,能合理管理内存。
-XX:+HeapDumpOnOutOfMemoryError:在堆溢出时保存快照
可以⽤ java -X命令在终端查询所有的java堆参数:
-Xmixed 混合模式执⾏ (默认)
-Xint 仅解释模式执⾏
-Xbootclasspath:<⽤ : 分隔的⽬录和 zip/jar ⽂件>
设置搜索路径以引导类和资源
-Xbootclasspath/a:<⽤ : 分隔的⽬录和 zip/jar ⽂件>
Spring各模块相关jar包(依赖)
Spring各模块相关jar包(依赖)Spring框架
1、测试单元
Test:Spring的单元测试模块;
spring-test-xxx.jar 依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
2、IOC容器
Core Container:核⼼容器(IOC)
1. spring-beans-xxx.jar 依赖
1<dependency>
2<groupId>org.springframework</groupId>
3<artifactId>spring-beans</artifactId>
4<version>5.2.3.RELEASE</version>
5</dependency>
2. spring-core-xxx.jar
依赖
1<dependency>
2<groupId>org.springframework</groupId>
3<artifactId>spring-core</artifactId>
4<version>5.2.3.RELEASE</version>
JAR包介绍大全用途作用详解JAVA
JAR包介绍大全用途作用详解JAVA
JAR(Java ARchive)是Java语言中使用的一种归档文件格式。它可
以将多个Java类文件、相关资源文件和元数据打包到一个文件中,便于
程序的发布、传输和执行。
JAR包的使用具有以下几个特点和作用:
1. 程序的打包和发布:JAR包可以将一个Java应用程序的所有相关
文件打包成一个文件,方便程序的发布和传输。将一个程序打包成JAR包
可以简化程序的部署过程,减少文件数目和目录结构,提高程序的稳定性
和可移植性。
2. 依赖管理:在Java开发中,一个应用程序通常会依赖于多个第三
方库和组件。使用JAR包可以将这些依赖的库文件打包成一个文件,方便
管理和使用。通过使用JAR包,可以简化项目的依赖管理过程,减少依赖
库的版本冲突和兼容性问题。
3. 类加载和运行:JAR包中的类文件被Java虚拟机(JVM)用于动
态加载和运行程序。在Java应用程序中,JVM会根据类的全限定名
(Class Name)来查找并加载对应的类文件。通过将类文件打包到JAR包中,可以提高类的查找和加载的效率。此外,JAR包还可以包含一些特殊
的元数据文件,如清单文件(Manifest),用于指定程序的入口类和其他
运行时的配置信息。
4. 资源管理:除了Java类文件,JAR包还可以包含其他类型的资源
文件,如图片、配置文件和Web页面等。在程序运行过程中,可以通过
JAR包提供的API来读取和使用这些资源文件,使程序更加灵活和可配置。
5.安全性:JAR包可以使用数字签名进行验证和授权,以确保包内的文件没有被篡改或替换。数字签名可以防止程序被恶意篡改或冒充,增强程序的安全性和可信度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
spring相关jar包简介
spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar 里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到
spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。
(1) spring-core.jar
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
(2) spring-beans.jar
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。
(3) spring-aop.jar
这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。
(4) spring-context.jar
这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。
(5) spring-dao.jar
这个jar文件包含Spring DAO、Spring Transaction进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。
(6) spring-hibernate.jar
这个jar文件包含Spring对Hibernate 2及Hibernate 3进行封装的所有类。
(7) spring-jdbc.jar
这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。
(8) spring-orm.jar
这个jar文件包含Spring对DAO特性集进行了扩展,使其支持iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar 包。
(9) spring-remoting.jar
这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、Http Invoker、JAX-RPC)方面的类。
(10) spring-support.jar
(11) spring-web.jar
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter 类和大量工具辅助类。
(12) spring-webmvc.jar
这个jar文件包含Spring MVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSL T相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。
(13) spring-mock.jar
这个jar文件包含Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。
如何选择这些发布包,决定选用哪些发布包其实相当简单。如果你正在构建Web应用并将全程使用Spring,那么最好就使用单个全部的spring.jar文件;如果你的应用仅仅用到简单的Inversion of Control / Dependency Injection(IoC/DI)容器,那么只需spring-core.jar与spring-beans.jar即可;如果你对发布的大小要求很高,那么就得精挑细选了,只取包含自己所需特性的jar文件了。采用独立的发布包你可以避免包含自己的应用不需要的全部类。当然你可以采用其它的一些工具来设法令整个应用包变小,节省空间的重点在于准确地找出自己所需的Spring依赖类,然后合并所需的类与包就可以了。Eclispe有个插件叫ClassPath Helper可以帮你找找所依赖的类。
Spring包依赖说明:
1) spring-core.jar需commons-collections.jar,spring-core.jar是以下其它各个的基本。
2) spring-beans.jar需spring-core.jar,cglib-nodep-2.1_3.jar
3) spring-aop.jar需spring-core.jar,spring-beans.jar,
cglib-nodep-2.1_3.jar,aopalliance.jar
4) spring-context.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,commons-collections.jar,aopalliance.jar
5) spring-dao.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-context.jar
6) spring-jdbc.jar需spring-core.jar,spring-beans.jar,spring-dao.jar
7) spring-web.jar需spring-core.jar,spring-beans.jar,spring-context.jar
8) spring-webmvc.jar需
spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar