一. 起因
因为在项目中遇到spring版本升级,spiring 3.1.0.CI-995 升级到 3.1.0.RELEASE,同样是3.1.0,但是包间的关系相差甚多,导致maven直接修改版本号后,spring相关包不存在。程序不能正常编译。
尝试通过maven中不能通过的项修改回原来的版本号,代码编译成功,但是运行是报错。原因很简单,3.1正式版要比之前的过渡版本修改的内容多很多,有很多修改,原有的配置文件中的配置项不在被使用。
配置文件按exception的信息修正后,代码正常启动。那么在保障程序正常启动后,就需要考虑一个问题了,为什么那些spring相关的包没有正式版呢?
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<!-- <version>3.0.7.RELEASE</version> -->
<version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.0.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.0.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
......
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-transaction</artifactId>
<version>3.1.0.CI-995</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web-portlet</artifactId>
<version>3.1.0.CI-995</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web-servlet</artifactId>
<version>3.1.0.CI-995</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web-struts</artifactId>
<version>3.1.0.CI-995</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
二. 大版本升级后的包合并
Spring 2.0 --> 2.5
'spring-support.jar' --> 'spring-context-support.jar'
'spring-portlet.jar' --> 'spring-webmvc-portlet.jar'
'spring-struts.jar' --> 'spring-webmvc-struts'
'spring-jmx.jar' --> 'spring-context.jar'
'spring-remoting.jar'--> 'spring-context.jar'
Spring 3.1.0
'spring-transaction' --> 'spring-tx'
'spring-web-servlet' --> 'spring-webmvc'
'spring-web-struts' --> 'spring-webmvc'
Spring 3.2.0
'spring-arm' --> 'spring-core'
三. spring各jar说明
spring3.1新特性:
Spring 3.1与之前2.X的不一样,新版本把原来的spring.jar分解了,想要使用哪个功能就导入相应的jar,现给出一些包的说明
// Spring的面向切面编程,提供AOP(面向切面编程)实现
org.springframework.aop-3.1.0.RELEASE
// Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar包.3.0开始提供他自己独立的asmJar
org.springframework.asm-3.1.0.RELEASE
// Spring提供对AspectJ框架的整合
org.springframework.aspects-3.1.0.RELEASE
// SpringIoC(依赖注入)的基础实现
org.springframework.beans-3.1.0.RELEASE
// Spring-context的扩展支持,用于MVC方面
org.springframework.context.support-3.1.0.RELEASE
// Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等
org.springframework.context-3.1.0.RELEASE
// Spring3.1的核心工具包
org.springframework.core-3.1.0.RELEASE
// Spring表达式语言
org.springframework.expression-3.1.0.RELEASE
// Spring3.1对Tomcat的连接池的集成
org.springframework.instrument.tomcat-3.1.0.RELEASE
// Spring3.1对服务器的代理接口
org.springframework.instrument-3.1.0.RELEASE
// 对JDBC的简单封装
org.springframework.jdbc-3.1.0.RELEASE
// 为简化JMS API的使用而作的简单封装
org.springframework.jms-3.0.0.RELEASE
// 整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现
org.springframework.orm-3.1.0.RELEASE
// Spring对Object/XMl的映射支持,可以让Java与XML之间来回切换
org.springframework.oxm-3.1.0.RELEASE
// 对Junit等测试框架的简单封装
org.springframework.test-3.1.0.RELEASE
// 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理
org.springframework.transaction-3.1.0.RELEASE
// SpringMVC的增强
org.springframework.web.portlet-3.1.0.RELEASE
// 对JEE6.0Servlet3.0的支持
org.springframework.web.servlet-3.1.0.RELEASE
// 整合Struts的时候的支持
org.springframework.web.struts-3.1.0.RELEASE
// SpringWeb下的工具包
org.springframework.web-3.1.0.RELEASE
四. 包间依赖
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
9) spring-hibernate.jar:
==> spring-core.jar
==> spring-beans.jar
==> spring-aop.jar
==> spring-dao.jar
==> spring-jdbc.jar
==> spring-orm.jar
==> spring-web.jar
==> spring-webmvc.jar
10) spring-orm.jar:
==> spring-core.jar
==> spring-beans.jar
==> spring-aop.jar
==> spring-dao.jar
==> spring-jdbc.jar
==> spring-web.jar
==> spring-webmvc.jar
11) spring-remoting.jar(spring-content):
==> spring-core.jar
==> spring-beans.jar
==> spring-aop.jar
==> spring-dao.jar
==> spring-context.jar
==> spring-web.jar
==> spring-webmvc.jar
12) spring-support.jar:
==> spring-core.jar
==> spring-beans.jar
==> spring-aop.jar
==> spring-dao.jar
==> spring-context.jar
==> spring-jdbc.jar
13) spring-mock.jar(spring-test):
==> spring-core.jar
==> spring-beans.jar
==> spring-dao.jar
==> spring-context.jar
==> spring-jdbc.jar
注意:因为部分内容是网上直接引用过来,我并没有去验证,所以肯定有不准确的地方,仅用于参考使用。
分享到:
相关推荐
### Struts2.3.15.1版本升级到2.3.32详细流程 #### 背景概述 Apache Struts是一个流行的用于构建企业级Java Web应用程序的开源框架。Struts2作为Struts框架的第二代产品,提供了一个灵活的架构来支持MVC设计模式,...
从早期版本的Spring Boot升级 11.开发您的第一个Spring Boot应用程序 11.1.创建POM 11.2.添加Classpath依赖项 11.3.编写代码 11.3.1.@RestController和@RequestMapping Annotations 11.3.2.@...
- **从Spring Boot早期版本升级**:给出升级指南,帮助开发者顺利迁移至最新版本。 #### 三、开发你的第一个Spring Boot应用 - **创建POM**:说明如何使用Maven项目对象模型文件(POM)来管理项目依赖。 - **添加...
在集成时,需要在类路径中包含mybatis-spring-x.x.x.jar文件,如果是使用Maven进行项目管理,需要在pom.xml中添加相应的依赖。 在MyBatis-Spring集成中,通常需要在Spring应用上下文中定义至少两个关键组件:...
4. **Spring框架集成**:描述中提到CXF与Spring集成良好,这意味着开发者可以利用Spring框架的强大功能,如依赖注入和AOP(面向切面编程),来管理CXF服务的生命周期和行为。 5. **多种协议支持**:CXF不仅限于HTTP...
3. **API独立性**:Struts2的代码不依赖特定API,升级过程更简单。 4. **输入处理**:Struts2允许直接使用Action类的属性作为输入,无需创建专门的ActionForm类。 5. **线程安全性**:每个线程在Struts2中拥有自己的...
3. **升级或降级依赖**:检查冲突的jar是否可以升级到兼容的新版本,或者降级到不影响其他库的旧版本。 4. **使用类加载器策略**:通过自定义类加载器,可以控制类的加载顺序,优先加载特定版本的类,以解决冲突。 ...
- **升级或降级依赖**:将所有库更新到最新版本,或者统一为较旧的兼容版本,以消除冲突。 总之,解决第三方包导入冲突是一个技术性和实践性并重的过程。理解冲突的原理,熟练运用各种解决策略,将有助于保持项目的...
- 首先,需要在项目中添加CXF和Spring的依赖库,包括CXF的jar包以及描述的Spring jar包。 - 创建服务接口,使用JAX-WS注解来定义服务的端点、操作等。 - 实现服务接口,并配置CXF来暴露此服务。可以使用Spring的`...
- 随着业务发展,你可能需要升级Flink CDC连接器版本,确保兼容性和利用最新特性。 总之,通过Flink-connector-sqlserver-cdc 2.3.0,我们可以轻松地构建一个实时数据同步系统,将SQL Server数据库的变化实时同步...
Struts 2是Struts 1的升级版,它合并了WebWork框架的优点,引入了更多功能和改进。该框架的主要目标是简化Java Servlet和JSP的开发,通过提供一组预定义的控制器、拦截器和模板技术,帮助开发者构建更加结构化的应用...
- 使用类库合并工具(如 JAR Jar)将多个 jar 包合并为一个,从而减少类的数量。 3. **升级 JDK 版本**: - 从 JDK 8 开始,PermGen space 已被永久代 (metaspace) 替换。Metaspace 使用本地内存而非堆内存,因此...
- **数据库升级**:提供升级指南以适应新版本的需求。 - **启用 Job 执行器**:用于调度定时任务的关键组件。 - **配置邮件服务器**:实现邮件通知等功能。 - **配置历史**:记录流程执行的历史信息,方便审计和...