最后这部分包含一些细节问题,在你从Spring 1.2/2.0升级到Spring 2.5时可能遇到。
从Spring 2.0.x应用程序升级到Spring 2.5只需要简单的把Spring 2.5的jar复制到你应用程序目录结构中的合适位置即可。我们高度建议任何运行在JDK 1.4.2或更高版本的Spring 2.0应用程序升级到Spring 2.5,特别是运行在Java 5或更高版本上的,Spring 2.5带来了巨大的配置便利和性能提高。
从Spring 1.2.x升级是否平滑取决于你在代码中使用了多少Spring API。Spring 2.0删除了在Spring 1.2.x代码中标注为“deprecated”的绝大部分类和方法,因此如果你使用了这些类或者方法,你当然得使用替代的类和方法(下面有一个列表)。
在配置方面,Spring 1.2.x风格的XML配置是100%信心保证和Spring 2.5兼容的。当然如果你还在使用Spring 1.2.x DTD,你没办法使用一些新的Spring 2.0功能(例如scopes , easier AOP 和 transaction configuration),但是没有什么会出错。
建议的升级策略是将Spring 2.5 jar放入,以得到新版本的好处(例如bug修正,优化,等等)。然后,以一种循序渐进的方式,开始选择使用新的Spring 2.5功能和配置。例如,你可以开始用新的Spring 2风格来配置你的aspects,完全可以将其中的90%仍然使用老的Spring 1.2.x配置(引用1.2.x DTD),剩下的10%使用新的Spring 2 配置(引用2.0/2.5 DTD或者XSD)。记住,将Spring 2.5类库替换后,你并不是非得升级你的XML配置不可。
如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'
文件。
Spring 2.5对JDK 1.3已经不再支持,因为Sun官方从2006晚期已经正式将JDK 1.3淘汰。请升级到JDK 1.4.2或更高版本。
如果你必须使用只支持JDK 1.3的应用服务器,例如WebSphere 4.0或5.0,我们建议你使用Spring Framework版本2.0.7/2.0.8,它们仍然支持JDK 1.3。
在Spring 2.5中, Spring Web MVC 不再是
'spring.jar'
文件的一部分. Spring MVC以'spring-webmvc.jar'
和'spring-webmvc-portlet.jar'
文件形式在发行包的 lib/modules
目录中存在。
另外,对Struts 1.x的支持被独立成 'spring-webmvc-struts.jar'
。
注意: 经常被使用的Spring的DispatcherServlet
也是Spring Web MVC框架的一部分。 因此,就算你只是为了远程访问(例如,暴露Hessian或者 HTTP调用服务)而使用DispatcherServlet
,你也得将'spring-webmvc.jar'
(或者 'spring-webmvc-portlet/struts.jar'
)放到'spring.jar'
旁边去。
Spring 2.0的 'spring-jmx.jar'
和 'spring-remoting.jar'
已经被转移到 Spring 2.5的'spring-context.jar'
(针对 JMX 和非HTTP 远程支持),部分转移到
'spring-web.jar'
(针对HTTP 远程支持)。
Spring 2.0的 'spring-support.jar'
被改名为 'spring-context-support.jar'
,
更好的表达其真实含义。
'spring-portlet.jar'
被改名为 'spring-webmvc-portlet.jar'
,表明它是Spring Web MVC framework的子模块之一。
类似的, 'spring-struts.jar'
被改为'spring-webmvc-struts.jar'
。
Spring 2.0的'spring-jdo.jar'
,
'spring-jpa.jar'
,
'spring-hibernate3.jar'
,
'spring-toplink.jar'
和 'spring-ibatis.jar'
被合并到Spring 2.5大粒度的'spring-orm.jar'
中。
Spring 2.5的 'spring-test.jar'
取代了'spring-mock.jar'
,表达其对test context framework的强烈关注。
注意 'spring-test.jar'
包含了上个版本 'spring-mock.jar'
中的一切,因此如果是单元或集成测试,可以直接取代。
Spring 2.5的 'spring-tx.jar'
取代了 'spring-dao.jar'
和'spring-jca.jar'
文件,表达其对transaction framework的强烈关注。
Spring 2.5 将其jar文件直接作为OSGi兼容的bundle。这使得在OSGi环境中使用Spring 更加方便,不再需要定制打包了。
Spring 2.0的XSD在描述Spring XML元数据格式方面比先前的DTD更丰富。 旧的DTD仍然得到支持,但如果可能我们鼓励在bean定义文件头部引用XSD文件。
有一点被改变了,那就是定义bean作用域的方式。如果你使用的是Spring 1.2 DTD,那么你能继续用'singleton'
属性。
如果你选择引用新的Spring 2.0 DTD,它不允许使用'singleton'
属性,
那么可以用'scope'
属性来定义bean的生命周期作用域。
一些以前被标记为@deprecated
的类和方法Spring 2.0代码库中被完全删除了。
Spring团队决定把2.0版本作为一个新的开始,那些被deprecated的代码应该被除去而不是在可预见的未来继续在代码中出现。
如前所述,如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'
文件。
下面的类/接口已经从Spring 2.0的代码中删除了:
ResultReader
: 使用RowMapper
接口代替。
BeanFactoryBootstrap
: 考虑使用一个BeanFactoryLocator
或是自定义引导类代替
Spring 2.0开始,请注意Spring主代码中的Apache OJB支持被完全删除了; 但仍然可以在Spring Modules项目中找到Apache OJB的集成库。
请注意iBATIS SQL Maps 1.3支持被完全去除了。如果你还在使用iBATIS SQL Maps 1.3, 请升级到iBATIS SQL Maps 2.0/2.1。
Spring 2.5中,对 Hibernate 2.1 和 Hibernate 3.0 的支持已经去除。请升级到Hibernate 3.1或更高版本。
如果你需要继续使用Hibernate 2.1或3.0,我们建议你继续使用Spring 2.0.7/2.0.8,这些版本仍然支持Hibernate的那些版本。
Spring 2.5中,对JDO 1.0 的支持被去除。请升级到JDO 2.0或更高版本。
如果你需要继续使用JDO 1.0,我们建议你继续使用spring 2.0.7/2.0.8,这些版本仍然支持JDO 1.0。