读书人

升级Spring3.1RC2 和Hibernate4.0.0CR

发布时间: 2013-01-02 13:08:44 作者: rapoo

升级Spring3.1RC2 和Hibernate4.0.0CR7遇到的一些问题及解决

Spring3.1RC2支持

1.?Quartz2

2.?Hibernate4,

3.?New?HandlerMethod-based?Support?Classes?For?Annotated?Controller?Processing

4.?Consumes?and?Produces?@RequestMapping?Conditions

5.?Working?With?URI?Template?Variables?In?Controller?Methods

6.?Validation?For?@RequestBody?Method?Arguments??//and?so?on....

7.?Spring?MVC?3.1?的annotation可以参看下http://starscream.iteye.com/blog/1098880?

Hibernate?4可以查看http://community.jboss.org/wiki/HibernateCoreMigrationGuide40?

下面主要说一下我在升级过程中遇到的一些问题及解决办法。

l?Maven的repository始终无法升级到SpringRC2,可能服务器有问题吧,目前暂时是从官方下载的整个SpringRC2的zip包。版本号是:3.1.0.RC2

l?Hibernate可以从repository中升级到4.0.0.CR7,新增的依赖包有jandex-1.0.3.Final.jar,jboss-logging-3.1.0.CR2.jar,jboss-transaction-api_1.1_spec-1.0.0.Final.jar。

l?Quartz升级到2.1.1,Ehcache-core升级到2.5.0

l?Spring3.1取消了HibernateTemplate,因为Hibernate4的事务管理已经很好了,不用Spring再扩展了。所以以前的Dao需要改写,直接调用Hibernate?的Session进行持久化。

l?Spring的配置:

sessionFactory从org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean换成org.springframework.orm.hibernate4.LocalSessionFactoryBean

l?Spring的配置:

<prop?key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>改为

<prop?key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>

EhCacheRegionFactory使用配置:

<prop?key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>

?

l?使用Hibernate所有的openSession()改为getCurrentSession()

l?Spring?的配置:Hibernate?transactionManager从3改为4,如下:

<bean?id="txManager"?class="org.springframework.orm.hibernate4.HibernateTransactionManager">

????????<property?name="sessionFactory"?ref="sessionFactory"/>

????</bean>

l?Spring?@ResponseBody输出是乱码的问题:原来使用的是:

<bean?class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">??

改为:

<bean?class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">??

<property?name?=?"messageConverters">

<list>??

<bean?class?=?"org.springframework.http.converter.StringHttpMessageConverter">??

<property?name?=?"supportedMediaTypes">??

<list>

<value>text/plain;charset=UTF-8</value>

</list>

</property>?

</bean>

<bean?class?=?"org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">??

<property?name?=?"supportedMediaTypes">??

<list>

<value>text/plain;charset=UTF-8</value>

<value>application/json;charset=UTF-8</value>

</list>??

</property>?

</bean>

</list>??

</property>??

这样比每个Controller都加上@RequestMapping(value?=?"/showLeft",?method?=?RequestMethod.GET)
?produces?=?"text/plain;?charset=utf-8"方便的多。

l?Blob,以前配置:

@TypeDefs({@TypeDef(name="clob",typeClass=ClobStringType.class),@TypeDef(name="blob",typeClass=BlobByteArrayType.class)})

@Lob

@Type(type="blob")

public?byte[]?getPic()?{

return?pic;

}

现在改为:

????@Lob

public?byte[]?getPic()?{

return?pic;

}

读书人网 >软件架构设计

热点推荐