Весенний переход на 5.0.0 замена устаревшего WebMvcConfigurerAdapter ошибочна
Я обновляю Spring Framework 4.3.9.RELEASE
до 5.0.0.RELEASE
и, к моему удивлению, классWebMvcConfigurerAdapter был помечен как устаревший начиная с версии 5.0. Как сказано в документации:
Устарел.
Начиная с версии 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-webmvc
- spring-orm
Несмотря на то, что я следовал весеннему дументу, я должен сделать что-то неправильно, потому что как только я пытаюсь запустить приложение, возникает ошибка:
Не могли бы вы помочь мне починить его? Не стесняйтесь требовать более подробной информации.2017-10-11 22:42:03 [localhost-startStop-1] предупреждение об исключении, возникшем во время контекста инициализация-отмена попытки обновления: org.весенняя рамка.зернышки.завод.BeanCreationException: ошибка при создании Бина с именем 'requestMappingHandlerAdapter', определенным в орг.весенняя рамка.сеть.сервлет.конфиг.аннотация.DelegatingWebMvcConfiguration: не удалось создать экземпляр Боба с помощью фабричного метода; вложенным исключением является org.весенняя рамка.зернышки.BeanInstantiationException: не удалось создать экземпляр [org.весенняя рамка.сеть.сервлет.в MVC.метод.аннотация.RequestMappingHandlerAdapter]: метод фабрики 'requestMappingHandlerAdapter' выбросил исключение; вложенные исключением является Java.яз..NoClassDefFoundError: com/fasterxml / jackson/databind / exc / InvalidDefinitionException
Окт 11, 2017 10: 42: 03 ODP. орг..апаш.Каталина.ядро.StandardContext listenerStart Суровым: исключение передающий контекст инициализируется событие для слушателя экземпляр класса org.весенняя рамка.сеть.контекст.ContextLoaderListener орг..весенняя рамка.зернышки.завод.BeanCreationException: ошибка при создании Бина с именем 'requestMappingHandlerAdapter' определяется в орг.весенняя рамка.сеть.сервлет.конфиг.аннотация.DelegatingWebMvcConfiguration: не удалось создать экземпляр Боба с помощью фабричного метода; вложенным исключением является org.весенняя рамка.зернышки.BeanInstantiationException: не удалось создать экземпляр [org.весенняя рамка.сеть.сервлет.в MVC.метод.аннотация.RequestMappingHandlerAdapter]: фабричный метод 'requestMappingHandlerAdapter' вызвал исключение; вложенное исключение-java.яз..Ошибке типа noclassdeffounderror: com/fasterxml / jackson/databind / exc / InvalidDefinitionException около......
1 ответ:
Этот вопрос не имеет ничего общего с
WebMvcConfigurer
(Вы должны удалить эту часть из вашего вопроса, так как это будет вводить в заблуждение других).Исключение указывает на Джексона, вы, скорее всего, не используете правильную версию Джексона:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
Spring Framework 5 требует Джексона 2.9+, , как указано в документации по миграции.