2.7. 移植到Spring 2.0

最后一节中详细说明了从Spring 1.2.x移植到Spring 2.0的过程中可能出现的问题。

先让我们来有所保留地看看下面这句话, 从Spring 1.2移植到Spring 2.0应该就是简单地把Spring 2.0的jar文件放进应用程序目录中的合适位置。

上一句话的关键字理所当然是“应该”。 到底是不是无缝升级依赖于你的代码中究竟用了多少Spring API。 Spring 2.0移除了很多在Spring 1.2.x代码库中标为deprecated的代码,所以如果你用了这些类或方法, 你应该使用它们的替代类或方法(下面总结了些)。

关于配置,Spring 1.2.x风格的XML配置与Spring 2.0完全兼容。你仍然可以继续使用Spring 1.2.x DTD, 不过这样你就不能充分利用一些Spring 2.0的新功能(例如作用域更易用的AOP事务配置), 但绝对不会有问题。

建议的移植策略是放入Spring 2.0的jar文件以便能使用改进过的代码(修正bug、优化等等)。 然后增量地开始尝试Spring 2.0的新特性和配置。例如,你可以选择先在切面配置上运用Spring 2.0风格作为开始; 90%的旧式Spring 1.2.x配置(引用1.2.x DTD)加上10%的Spring 2.0配置(引用2.0 DTD和XSD)是完全有效的。要记住, 在使用Spring 2.0库的同时并非一定要升级XML配置。

2.7.1. 一些变化

如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'文件。

2.7.1.1. Jar包

1.2.x和2.0的Spring Framework jar文件有很多不同之处。 特别是现在JDO、Hibernate 2/3、TopLink的ORM集成类有专门的jar文件:它们不再被打包在核心文件 'spring.jar'中了。

2.7.1.2. XML配置

Spring 2.0的XSD在描述Spring XML元数据格式方面比先前的DTD更丰富。 旧的DTD仍然得到支持,但如果可能我们鼓励在bean定义文件头部引用XSD文件。

有一点被改变了,那就是定义bean作用域的方式。如果你使用的是Spring 1.2 DTD,那么你能继续用'singleton'属性。 如果你选择引用新的Spring 2.0 DTD,它不允许使用'singleton'属性, 那么可以用'scope'属性来定义bean的生命周期作用域。

2.7.1.3. Deprecated的类和方法

一些以前被标记为@deprecated的类和方法Spring 2.0代码库中被完全删除了。 Spring团队决定把2.0版本作为一个新的开始,那些被deprecated的代码应该被除去而不是在可预见的未来继续在代码中出现。

就如前面所说的,如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'文件。

下面的类/接口已经从Spring 2.0的代码中删除了。

  • ResultReader : 使用RowMapper接口代替。

  • BeanReferenceFactoryBean : 使用别名机制代替

  • BeanDefinitionRegistryBuilder : 使用BeanDefinitionReaderUtils类上的方法代替

  • BeanFactoryBootstrap : 考虑使用一个BeanFactoryLocator 或是自定义引导类代替

  • RequestUtils : 使用ServletRequestUtils代替

2.7.1.4. Apache OJB

请注意Spring主代码中的Apache OJB支持被完全删除了; 但仍然可以在Spring Modules项目中找到Apache OJB的集成库。

2.7.1.5. iBatis

请注意iBATIS SQL Maps 1.3支持被完全去除了。如果你还在使用iBATIS SQL Maps 1.3, 请升级到iBATIS SQL Maps 2.0/2.1。