2016-06-16 8 views
0

私はBeanの設定に純粋なJava設定を使用するSpring WebMvc(Springブートではない)プロジェクトで作業しています。私は、Spring/JacksonがLocalDateTimeのようなjava.time(jsr310)オブジェクトで@DateTimeFormatアノテーションを尊重するのが難しいです。Spring DateTimeFormat java.timeのコンフィグレーション

classpathにjackson-datatype-jsr310とjackson-databind jars(バージョン2.7.4)があり、基本的なwebmvcアプリケーションのスプリングコンテキストとspring-webmvc(バージョン4.3.0

@Configuration 
@ComponentScan({"com.example.myapp"}) 
public class WebAppConfig extends WebMvcConfigurationSupport { 
    @Override 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
     ObjectMapper mapper = Jackson2ObjectMapperBuilder 
      .json() 
      .indentOutput(true) 
      .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) 
      .findModulesViaServiceLoader(true) 
      .build(); 

     converters.add(new MappingJackson2HttpMessageConverter(mapper)); 

     super.addDefaultHttpMessageConverters(converters); 
    } 
} 

私は残りのコントローラ上で、私のデータモデルをシリアライズでこれをテストしてみた:.RELEASE)

は、ここに私の関連する構成クラスです。 Jacksonが@JsonFormatを尊重しているように見えるが、@DateTimeFormatは完全に無視されているようだ。

@DateTimeFormatを尊重するためにspring/jacksonを取得するために追加する設定は何ですか? @JsonFormatを使用するだけで問題に遭遇する可能性のある、2つのアノテーションの間に重要な違いがありますか?

答えて

2

@JsonFormatはジャクソン注釈です。 @DateTimeFormatは春の注釈です。

@JsonFormatは、JSONへのLocalDateTimeのシリアル化中に書式設定を制御します。

ジャクソンは、Springの@DateTimeFormatについて知りません。これは、JSPビューでレンダリングされるときにSpringでBeanの書式設定を制御するために使用されます。

のJavadoc:

http://docs.spring.io/spring-framework/docs/4.2.3.BUILD-SNAPSHOT/javadoc-api/org/springframework/format/annotation/DateTimeFormat.html

http://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.7.5/com/fasterxml/jackson/annotation/JsonFormat.html

+0

は、私はほとんど私が潜在的に必要とする可能性があるシナリオがあることを意味している(私が間違っているなら、私を修正)以来、オンラインの例を見て混乱だったと思います両方の注釈をJava時刻プロパティで使用するたとえば、休憩(ジャクソン)とjspページのスプリング形式のストリングの両方で1つのBeanを公開したい場合は、 – Alex

+0

@Alexを修正するには、両方を使用する必要があります。 – ck1

関連する問題