我将Spring框架4.3.9.RELEASE
更新为5.0.0.RELEASE
,令我惊讶的是,自5.0版本以来,类WebMvcConfigurerAdapter已被标记为已弃用。正如文档所说:
弃用。
从5.0开始,WebMvcConfigurer具有默认方法(由Java 8基线实现),并且可以直接实现而无需此适配器
我尝试更改类定义以实现WebMvcConfigurer。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "net.nichar.app")
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
}
}
我使用Maven导入以下工件,它们都是相同的版本:
虽然我遵循Spring的设计,但我必须做错事,因为只要我尝试运行应用程序,就会抛出错误:
你能帮我解决一下吗?随意需要更多细节。2017-10-11 22:42:03 [localhost-startStop-1] WARN在上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名称为'的bean时出错requestMappingHandlerAdapter'在org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration中定义:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]:工厂方法' requestMappingHandlerAdapter'抛出异常;嵌套异常是java.lang.NoClassDefFoundError:com / fasterxml / jackson / databind / exc / InvalidDefinitionException
2017年10月11日10:42:03 ODP。 org.apache.catalina.core.StandardContext listenerStart SEVERE:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例的异常 org.springframework.beans.factory.BeanCreationException:创建名称为' requestMappingHandlerAdapter'在org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration中定义:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]:工厂方法' requestMappingHandlerAdapter'抛出异常;嵌套异常是java.lang.NoClassDefFoundError:com / fasterxml / jackson / databind / exc / InvalidDefinitionException 在.......
答案 0 :(得分:2)
此问题与WebMvcConfigurer
无关(您应该从问题中删除该部分,因为这会误导其他人)。
杰克逊的例外情况,你很可能没有使用正确的杰克逊版本:
java.lang.NoClassDefFoundError:
com/fasterxml/jackson/databind/exc/InvalidDefinitionException
Spring Framework 5需要Jackson 2.9 +,as stated in the migration documentation。