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

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

  • 问题一:ibatis报错
    • 错误信息:
    • 错误原因:
    • 解决办法:添加mybatis-2-spring依赖
    • 参考文档: [link](https://stackoverflow.com/questions/32353286/no-support-for-ibatis-in-spring4-2-0).
  • 问题二:spring MappingJacksonJsonView没找到报错
    • 错误信息:
    • 错误原因:
    • 解决办法:使用org.springframework.web.servlet.view.json.MappingJackson2JsonView代替
    • 参考文档: [link](https://blog.csdn.net/super_DuoLa/article/details/107046283).
  • 问题三:引用hibernate-validator错误
    • 错误信息:
    • 错误原因 :
    • 解决办法:
    • 针对非spring升级导致的错误,即本就是spring3.x报错,请参考这个文章:
    • 参考文档: [link](https://blog.csdn.net/asdasd3418/article/details/82784778)、[link](https://www.cnblogs.com/or2-/p/3519111.html).
  • 问题四:jackson依赖错误
    • 错误信息:
    • 错误原因:
    • 解决办法:修改jackson依赖
    • 参考文档: [link](https://www.cnblogs.com/zaks/p/11411858.html)、[link](https://www.cnblogs.com/code-xu/p/14496924.html)、[Jackson fasterxml和codehaus的区别](https://blog.csdn.net/ClementAD/article/details/46416647).
  • 问题五:AnnotationMethodHandlerAdapter找不到
    • 解决方案:
  • 问题六:Hibernate Validator错误2
    • 错误信息:
    • 错误原因:
    • 解决办法:

环境: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.x升级到sprin5.x问题记录_第1张图片
spring3.x升级到sprin5.x问题记录_第2张图片

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

<dependency>
    <groupId>org.mybatisgroupId>
    <artifactId>mybatis-2-springartifactId>
    <version>1.0.1version>
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.x升级到sprin5.x问题记录_第3张图片

spring3.x升级到sprin5.x问题记录_第4张图片

解决办法:使用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

spring3.x升级到sprin5.x问题记录_第5张图片

参考文档: 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。



<dependency>
    <groupId>org.hibernategroupId>
    <artifactId>hibernate-validatorartifactId>
    <version>4.1.0.Finalversion>
dependency>



<dependency>
    <groupId>javax.validationgroupId>
    <artifactId>validation-apiartifactId>
    <version>1.0.0.GAversion>
dependency>

解决办法:




<dependency>
    <groupId>org.hibernategroupId>
    <artifactId>hibernate-validatorartifactId>
    <version>6.1.0.Finalversion>
dependency>

spring3.x升级到sprin5.x问题记录_第6张图片

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

spring3.x升级到sprin5.x问题记录_第7张图片

参考文档: link、link.



问题四:jackson依赖错误

错误信息:

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

错误原因:

解决办法:修改jackson依赖





<dependency>
    <groupId>org.codehaus.jacksongroupId>
    <artifactId>jackson-jaxrsartifactId>
    <version>1.5.2version>
dependency>

<dependency>
	<groupId>org.codehaus.jacksongroupId>
	<artifactId>jackson-mapper-aslartifactId>
	<version>1.5.2version>
dependency>

<dependency>
    <groupId>org.codehaus.jacksongroupId>
    <artifactId>jackson-core-aslartifactId>
    <version>1.5.2version>
dependency>




<dependency>
	<groupId>com.fasterxml.jackson.coregroupId>
    <artifactId>jackson-coreartifactId>
    <version>2.9.8version>
dependency>
<dependency>
    <groupId>com.fasterxml.jackson.coregroupId>
    <artifactId>jackson-databindartifactId>
    <version>2.9.8version>
dependency>
<dependency>
    <groupId>com.fasterxml.jackson.coregroupId>
    <artifactId>jackson-annotationsartifactId>
    <version>2.9.8version>
dependency>

参考文档: link、link、Jackson 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配置

	
    <mvc:annotation-driven validator="validator"/>

	
	<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配置

	
    <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();
    }
}

你可能感兴趣的:(#,Spring,Boot,spring,java,ibatis,spring,3)