【问题标题】:Spring MVC, MessageConverters, Code Configuration IgnoredSpring MVC,MessageConverters,忽略代码配置
【发布时间】:2017-11-03 01:16:35
【问题描述】:

我混合使用了 xml 和基于代码的配置。我的代码配置的一部分被忽略了。这个:

@Configuration
@EnableWebMvc
public class RestMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(converter());
        super.configureMessageConverters(converters);
    }

    @Bean
    public MappingJackson2HttpMessageConverter converter() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JodaModule());
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);

        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setObjectMapper(mapper);

        return converter;
    }
}

我在 Spring MVC 应用程序启动时调试 configureMessageConverters() 方法,并执行它。尽管如此,我在控制器中的 JSON 响应并没有将 Joda LocalDate 转换为字符串表示,而是返回整个对象结构。

为什么会被忽略?

【问题讨论】:

    标签: java spring-mvc jackson jodatime jackson-modules


    【解决方案1】:

    结合使用 xml 和基于代码的配置,很容易导致您将一件事配置两次,从而使 Spring 覆盖以前的配置。在我的情况下,这是由于在 xml 中也配置了 MVC:

    <context:component-scan base-package="uk.co.imperatives.billing.rest" />
    <mvc:annotation-driven />
    <context:annotation-config />
    

    所以,在这种情况下,xml 配置重置了我的代码配置。删除&lt;mvc:annotation-driven /&gt; 解决了这个问题。所以,这行得通:

    <context:component-scan base-package="uk.co.imperatives.billing.rest" />
    <context:annotation-config />
    

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多