2017-08-10 14 views
0

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=falseをSpringブート設定に設定しましたが、JacksonシリアライザはDateTime値の場合は"1942-04-02"の代わりに[1942,4,2]を生成します。ジャンクションの設定Spring起動時にWRITE_DATES_AS_TIMESTAMPSが機能しない

いくつかのデバッグスナップショットorg.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.Jackson2ObjectMapperBuilderCustomizerConfiguration.StandardJackson2ObjectMapperBuilderCustomizer#customize

  • 示し

    configureFeatures(builder, this.jacksonProperties.getSerialization());

    があることを "WRITE_DATES_AS_TIMESTAMPS" - > "偽" org.springframework.http.converter.json.Jackson2ObjectMapperBuilder#configureで少し後次に

  • このループはあります

    for (Object feature : this.features.keySet()) { configureFeature(objectMapper, feature, this.features.get(feature)); }

    と再びthis.features "WRITE_DATES_AS_TIMESTAMPS" を言う - provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)はfalseを返しますので

  • > "偽" だがDateTimecom.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase#useTimestampのserialzation時にはfalseを言います。私は多くの場所で言及したことがわかったので、絶望のうち

    • を固定で

    試みが、私は(Boot documentationはこれをヒントしていなくても)spring.jackson.serialization.write-dates-as-timestamps=falsespring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=falseを置き換えます。これはどうですか?彼らは同義語のように見えます - 効果はありません。

  • この質問を書いている間、SOはWRITE_DATES_AS_TIMESTAMPS not woking on Spring boot 1.3.5を提案しました。答えはWebMvcConfigurationSupportWebMvcConfigurerAdapterに置き換えると言います。これが本当に助けになる間、なぜ私はなぜそう理解できないのですか。

答えて

3

Springブートでは、Spring MVCの設定を完全に制御したいという指示として、WebMvcConfigurationSupport Beanが存在します。通常、@EnableWebMvcを使用してそのようなBeanになりますが、WebMvcConfigurationSupportという独自のBeanまたは構成クラスを宣言することもできます。

WebMvcConfigurationSupportではなくWebMvcConfigurerAdapterをサブクラス化すると、完全に引き継ぐのではなく、SpringBlockの自動設定からSpring MVCの追加設定を変更しています。

SpringBlockのSpring MVCの自動設定の一部は、HTTPメッセージ変換用に自動設定されたObjectMapperを使用するように設定することです。 Bootの自動設定からSpring MVCを無効にした場合は、別のObjectMapperがあり、これはspring.jackson.*の設定の影響を受けません。

関連する問題