最后一节中详细说明了从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配置。
如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'
文件。
1.2.x和2.0的Spring Framework jar文件有很多不同之处。
特别是现在JDO、Hibernate 2/3、TopLink的ORM集成类有专门的jar文件:它们不再被打包在核心文件
'spring.jar'
中了。
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
接口代替。BeanReferenceFactoryBean
: 使用别名机制代替BeanDefinitionRegistryBuilder
: 使用BeanDefinitionReaderUtils
类上的方法代替BeanFactoryBootstrap
: 考虑使用一个BeanFactoryLocator
或是自定义引导类代替RequestUtils
: 使用ServletRequestUtils
代替
请注意Spring主代码中的Apache OJB支持被完全删除了; 但仍然可以在Spring Modules项目中找到Apache OJB的集成库。