[英]Migration from Spring 2.5 to 4
我想將項目從Spring 2.5遷移到Spring 4.1
我的項目中使用的Spring和Hibernate jar的舊版本是:
春天2.5.6
彈簧webmvc 2.5.6
spring-webflow 2.0.7。發布
休眠注釋3.4.0.GA
休眠公共注釋3.1.0.GA
休眠核心3.3.1.GA
休眠ejb3-persistence 1.0.2.GA
我想知道是否有辦法找到與Spring即4.1兼容的最新版本的Hibernate。
其次,我想知道我應該在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進行查詢。 遷移后可以繼續使用相同的功能嗎?
非常感謝您提前提出的每條提示...
從理論上講,它應該是替代品。 但是,在遷移之前,我強烈建議您先更改您使用的xml文件。 當前,您在標頭(即spring-beans-2.5.xsd
中對xsd進行了版本控制,請刪除版本(即spring-beans.xsd
。
接下來,最好用<context:property-placeholder />
而不是普通bean替換PropertyPlaceHolderConfigurer
。
Hibernate集成已對Hibernate4進行了高度重構,因此我會堅持使用最新的hibernate 3.x版本(3.6.10),並進行單獨的遷移(遷移至普通Hibernate 4或JPA)。 如果再次運行它,則升級到最新的休眠版本(4.3.6),因為這將需要進行一些代碼更改,並且取決於代碼量,這可能會造成很大的傷害。
您正在使用的彈簧罐已經不存在了,因此您需要弄清楚需要哪些模塊(從設置中至少從jdbc和orm來看)。 我真的希望您使用Maven來管理您的依賴項,否則您將需要尋找正確的相關依賴項捆綁包。
Spring Web Flow也將需要升級到最新的2.4.0,但是不確定這是否是替代產品。
更新后,我猜它大部分仍然可以使用(或者您在這里還必須具有一些其他未列出的依賴項,這些依賴項也需要升級)。
要記住的一件事是,次要的Java版本也進行了升級,因此,如果您仍在1.5或更低版本上,則在升級到Spring 4.x時,您的項目需要至少為Java 1.6。
我也強烈建議您閱讀遷移指南 ,其中包含一些有價值的信息。 (您可能需要瀏覽文檔的歷史記錄以檢索2.5-> 3.x版本)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.