我想将我的项目从Spring 2.5迁移到Spring 4.1 我项目中使用的旧版Spring和Hibernate jar是:
春天2.5.6我想知道是否有一种方法可以找到与Spring兼容的最新版Hibernate即4.1 其次,我想知道应该在applicationContext.xml中进行哪些配置更改。 我的applicationContext看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${dataSource.driverClassName}"></property>
<property name="url" value="${dataSource.url}"></property>
<property name="username" value="${dataSource.username}"></property>
<property name="password" value="${dataSource.password}"></property>
<property name="initialSize" value="1"></property>
<property name="maxActive" value="10"></property>
<property name="maxIdle" value="14"></property>
<property name="minIdle" value="2"></property>
<property name="maxWait" value="15000"></property>
<property name="validationQuery" value="SELECT 1"></property>
<property name="minEvictableIdleTimeMillis" value="5000"></property>
<property name="testOnBorrow" value="true"></property>
<property name="testOnReturn" value="true"></property>
<property name="removeAbandoned" value="true"></property>
<property name="removeAbandonedTimeout" value="5"></property>
</bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- Limit uploads to small (5KB) files for this sample -->
<property name="maxUploadSize" value="809000" />
</bean>
<!-- Default Connection -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>/WEB-INF/hibernate.cfg.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${dataSource.dialect}</prop>
<prop key="hibernate.default_batch_fetch_size">30</prop>
<prop key="hibernate.jdbc.fetch_size">20</prop>
<prop key="org.hibernate.cache">info</prop>
<prop key="org.hibernate.transaction">debug</prop>
<prop key="hibernate.jdbc.batch_size">100</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.jdbc.batch_versioned_data">true</prop>
</props>
</property>
<property name="schemaUpdate" value="false" />
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="baseService" abstract="true" lazy-init="true">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="dataSource" ref="dataSource"/>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
最后,我使用HibernateTemplate进行查询。迁移后我可以继续使用它吗?
非常感谢提前的每一个提示......
答案 0 :(得分:3)
理论上它应该是替代品。但是在迁移之前,我强烈建议您先更改您使用的xml文件。目前,您已在标题中对xsd进行了版本管理,即spring-beans-2.5.xsd
删除版本,即spring-beans.xsd
。
接下来,PropertyPlaceHolderConfigurer
最好替换为<context:property-placeholder />
而不是普通bean。
hibernate集成已经为Hibernate4进行了高度重构,所以我会坚持使用最新的hibernate 3.x版本(3.6.10)并将其作为单独的迁移(对于普通的Hibernate 4或JPA)。如果你再次运行它然后升级到最新的hibernate版本(4.3.6),因为这将需要一些代码更改,并且根据代码量可能会有很大的损失。
您正在使用不再存在的弹簧罐,因此您需要确定所需的模块(至少从您的设置判断为jdbc和orm)。我真的希望你使用Maven来管理你的依赖关系,否则你正在寻找正确的相关依赖包。
Spring Web Flow还需要升级到最新的2.4.0,但不确定这是否是替代品。
更新后我猜大部分内容仍然可以使用(或者你必须在这里有一些其他未列出的依赖项,也需要升级)。
要记住的一点是,小型java版本也升级了,所以当升级到Spring 4.x时,如果你仍然在1.5或更低版本,你的项目必须至少是java 1.6,它将无法工作。
我还强烈建议阅读包含一些有价值信息的the migration guide。 (您可能希望浏览文档的历史记录以检索2.5 - > 3.x版本)。