Весенний переход на 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 2

1 ответ:

Этот вопрос не имеет ничего общего с WebMvcConfigurer (Вы должны удалить эту часть из вашего вопроса, так как это будет вводить в заблуждение других).

Исключение указывает на Джексона, вы, скорее всего, не используете правильную версию Джексона:

java.lang.NoClassDefFoundError: 
com/fasterxml/jackson/databind/exc/InvalidDefinitionException

Spring Framework 5 требует Джексона 2.9+, , как указано в документации по миграции.