Как мне включить поддержку переменных матрицы без искажения конфигурации загрузки Spring?

#spring-mvc #spring-boot

#spring-mvc #весенняя загрузка

Вопрос:

Я хотел бы использовать Spring Boot для использования преимуществ JacksonAutoConfiguration и включить матричные переменные для моих контроллеров, что требует вызова RequestMappingHandlerMapping.setRemoveSemicolonContent(false) .

Когда эта тривиальная суть выполняется без WebMvcConfiguration сканирования, вывод

 {"dateTime":1404244199372}
  

Когда он сканируется, вывод

 {"dateTime":{"year":2014,"era":1,"dayOfYear":182,"dayOfWeek":2,"dayOfMonth":1,"centuryOfEra":20,"yearOfEra":2014,"yearOfCentury":14,"weekyear":2014,"monthOfYear":7,"weekOfWeekyear":27,"secondOfDay":76856,"minuteOfDay":1280,"hourOfDay":21,"minuteOfHour":20,"secondOfMinute":56,"millisOfSecond":807,"millisOfDay":76856807,"chronology":{"zone":{"fixed":false,"uncachedZone":{"cachable":true,"fixed":false,"id":"Europe/Berlin"},"id":"Europe/Berlin"}},"zone":{"fixed":false,"uncachedZone":{"cachable":true,"fixed":false,"id":"Europe/Berlin"},"id":"Europe/Berlin"},"millis":1404242456807,"afterNow":false,"beforeNow":true,"equalNow":false}}  
  

Довольно сложно сказать, почему это происходит, и я все еще не уверен, покопавшись в ObjectMapper s, JodaModule и MappingJackson2HttpMessageConverter .

Есть идеи, как настроить Spring, чтобы использовать как Spring Boot, так и поддерживать переменные матрицы?

Обновление: Другие сбои, вызванные сканированием, DelegatingWebMvcConfiguration включают поддержку загрузки http.mappers.jsonPrettyPrint .

Ответ №1:

Как описано здесь, следующее выполняет трюк с Spring Boot 1.2.

 @Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {

        UrlPathHelper urlPathHelper = new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);

        configurer.setUrlPathHelper(urlPathHelper);
    }
}
  

Ответ №2:

Я думаю, вам, возможно, просто придется скопировать нужные вам биты из автоконфигурации загрузки. Или поднимите проблему с Spring Framework, чтобы получить поддержку функции с запятой, добавленной в WebMvcConfigurer . Еще одна вещь, которая может просто сработать, — это добавить RequestMappingHandlerMapping напрямую (вместо использования базового класса для вашей конфигурации).