UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Spring Boot】Jackson2ObjectMapperBuilderCustomizerでObjectMapperBuilderをカスタマイズする

ObjectMapperをカスタマイズするためにJackson2ObjectMapperBuilderを使う場合、以下の設定がデフォルトで無効になっている

MapperFeature.DEFAULT_VIEW_INCLUSION DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES SerializationFeature.WRITE_DATES_AS_TIMESTAMPS

このときカスタマイズする設定との順番を制御したい

Jackson2ObjectMapperBuilderCustomizer

Jackson2ObjectMapperBuilderCustomizerを使えばJackson2ObjectMapperBuilderをカスタマイズでき、@Order アノテーションを使用することで、デフォルトの設定との順番を制御できるようになる

spring.pleiades.io

    @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にすることで最後に設定されるようにしている

spring.pleiades.io

これで設定の順番を制御することができるようになった