ObjectMapperをカスタマイズするためにJackson2ObjectMapperBuilderを使う場合、以下の設定がデフォルトで無効になっている
MapperFeature.DEFAULT_VIEW_INCLUSION DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
このときカスタマイズする設定との順番を制御したい
Jackson2ObjectMapperBuilderCustomizer
Jackson2ObjectMapperBuilderCustomizerを使えばJackson2ObjectMapperBuilderをカスタマイズでき、@Order アノテーションを使用することで、デフォルトの設定との順番を制御できるようになる
@Bean @Order(Ordered.LOWEST_PRECEDENCE) @ConditionalOnClass(Jackson2ObjectMapperBuilder.class) public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { return new Jackson2ObjectMapperBuilderCustomizer() { @Override public void customize(Jackson2ObjectMapperBuilder builder) { builder.propertyNamingStrategy(PropertyNamingStrategies.LOWER_CAMEL_CASE); builder.featuresToDisable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); } } }
Ordered.LOWEST_PRECEDENCE
にすることで最後に設定されるようにしている
これで設定の順番を制御することができるようになった