因为在项目中遇到spring版本升级,spiring 3.1.0.CI-995 升级到 3.1.0.RELEASE,同样是3.1.0,但是包间的关系相差甚多,导致maven直接修改版本号后,spring相关包不存在。程序不能正常编译。
尝试通过maven中不能通过的项修改回原来的版本号,代码编译成功,但是运行是报错。原因很简单,3.1正式版要比之前的过渡版本修改的内容多很多,有很多修改,原有的配置文件中的配置项不在被使用。
配置文件按exception的信息修正后,代码正常启动。那么在保障程序正常启动后,就需要考虑一个问题了,为什么那些spring相关的包没有正式版呢?
org.springframework spring-webmvc 3.1.0.RELEASE org.springframework spring-web 3.1.0.RELEASE jar compile ...... org.springframework spring-core 3.1.0.RELEASE jar compile org.springframework spring-transaction 3.1.0.CI-995 jar compile org.springframework spring-web-portlet 3.1.0.CI-995 jar compile org.springframework spring-web-servlet 3.1.0.CI-995 jar compile org.springframework spring-web-struts 3.1.0.CI-995 jar compile
二. 大版本升级后的包合并
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
注意:因为部分内容是网上直接引用过来,我并没有去验证,所以肯定有不准确的地方,仅用于参考使用。