#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
напрямую (вместо использования базового класса для вашей конфигурации).