spring3.x升级到sprin5.x问题记录

环境:jdk8、sprin3.0.6、ibatis、maven
org.springframework 3.0.6.RELEASE 升级至 5.2.19.RELEASE
org.springframework.security3.0.7.RELEASE 升级至 5.2.15.RELEASE

问题一:ibatis报错

错误信息:

ClassNotFoundException: org.springframework.orm.ibatis.SqlMapClientTemplate

错误原因:

spring升级到4.x后,orm包里面移除了对ibatis的支持
spring3.0.6版本截图
spring 5.x版本截图

解决办法:添加mybatis-2-spring依赖

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-2-spring</artifactId>
    <version>1.0.1</version>
</dependency>

参考文档: link.



问题二:spring MappingJacksonJsonView没找到报错

错误信息:

nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.web.servlet.view.json.MappingJacksonJsonView] for bean with name 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#1a8e5f95' defined in class path resource [springmvc-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.web.servlet.view.json.MappingJacksonJsonView

错误原因:

spring升级到4.x之后处理JSON的类不再是 MappingJacksonJsonView
spring3.0.6 json处理类

spring 5.x json处理类

解决办法:使用org.springframework.web.servlet.view.json.MappingJackson2JsonView代替

spring4.x以下版本处理“将ModelAndView里的数据变成JSON”的类
org.springframework.web.servlet.view.json.MappingJacksonJsonView 
 
spring4.x以上版本处理“将ModelAndView里的数据变成JSON”的类
org.springframework.web.servlet.view.json.MappingJackson2JsonView

在这里插入图片描述

参考文档: link.



问题三:引用hibernate-validator错误

错误信息:

Caused by: java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;

错误原因 :

hibernate-validator 4.3.0.Final版本校验框架是JSR-303,而Hibernate validator 5.1.0.Final版本校验框架是JSR-349,spring-context-5.0.X.RELEASE.jar框架采用新的校验框架JSR-349。

<!-- 原maven依赖 -->
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.1.0.Final</version>
</dependency>

<!-- 新maven依赖 -->
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.0.0.GA</version>
</dependency>

解决办法:

<!-- 备注:这里省下了一个依赖,hibernate-validator默认引用了validation-api,如下图) -->

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.0.Final</version>
</dependency>

在这里插入图片描述

针对非spring升级导致的错误,即本就是spring3.x报错,请参考这个文章:

在这里插入图片描述

参考文档: linklink.



问题四:jackson依赖错误

错误信息:

Could not load com/fasterxml/jackson/core/JsonGenerator

错误原因:

解决办法:修改jackson依赖


<!-- 原maven依赖 -->
<!--jackson start -->
<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-jaxrs -->
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-jaxrs</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
	<groupId>org.codehaus.jackson</groupId>
	<artifactId>jackson-mapper-asl</artifactId>
	<version>1.5.2</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.5.2</version>
</dependency>
<!--jackson end -->


<!-- 新maven依赖 -->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.8</version>
</dependency>

参考文档: linklinkJackson fasterxml和codehaus的区别.



问题五:AnnotationMethodHandlerAdapter找不到

解决方案:

废弃的 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

最新使用 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter


问题六:Hibernate Validator错误2

错误信息:

nested exception is java.lang.NoClassDefFoundError: org/hibernate/validator/resourceloading/ResourceBundleLocator

错误原因:

解决办法:

spring3.x配置

	<!-- 开启支持@NumberFormat @DateTimeFormat @Valid标注 ,@DateTimeFormat用于bean 日期属性的格式化,请查看: http://static.springsource.org/spring/docs/3.0.2.RELEASE/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-config-->
    <mvc:annotation-driven validator="validator"/>

	<!-- 用于启用Hibernate Validator,并且使用spring MessageSource替换java ResourceBundle -->
	<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" >
		<property name="messageInterpolator" ref="messageInterpolator"/>
	</bean>

	<bean id="messageInterpolator" class="org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator" >
		<constructor-arg ref="resourceBundleLocator"></constructor-arg>
	</bean>
	
 	<bean id="resourceBundleLocator" class="cn.org.rapid_framework.beanvalidation.MessageSourceResourceBundleLocator">
 		<property name="messageSource" ref="messageSource"/>		
 	</bean>

spring5.x配置

	<!-- 开启支持@NumberFormat @DateTimeFormat @Valid标注 ,@DateTimeFormat用于bean 日期属性的格式化,请查看: http://static.springsource.org/spring/docs/3.0.2.RELEASE/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-config-->
    <mvc:annotation-driven validator="validator"/>
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

@Configuration
public class MyConfig {

    @Bean("validator")
    public Validator LocalValidator(){
        return new LocalValidatorFactoryBean();
    }
}

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值