1 package top.infra.jackson2;
2
3 import com.fasterxml.jackson.databind.ObjectMapper;
4
5 import org.springframework.boot.autoconfigure.AutoConfigureBefore;
6 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
7 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
8 import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
9 import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
10 import org.springframework.boot.context.properties.EnableConfigurationProperties;
11 import org.springframework.context.annotation.Bean;
12 import org.springframework.context.annotation.Configuration;
13
14 import java.util.List;
15
16 @AutoConfigureBefore({JacksonAutoConfiguration.class})
17 @ConditionalOnClass({ObjectMapper.class})
18 @ConditionalOnWebApplication
19 @Configuration
20 @EnableConfigurationProperties({Jackson2Properties.class})
21 public class Jackson2AutoConfiguration {
22
23 @Bean
24 public DefaultJackson2Customizer defaultJackson2Customizer() {
25 return new DefaultJackson2Customizer();
26 }
27
28 @Bean
29 @ConditionalOnMissingBean(DefaultJackson2ObjectMapperBuilderCustomizer.class)
30 public DefaultJackson2ObjectMapperBuilderCustomizer defaultJackson2ObjectMapperBuilderCustomizer(
31 final List<Jackson2Customizer> customizers,
32 final Jackson2Properties properties
33 ) {
34 return new DefaultJackson2ObjectMapperBuilderCustomizer(customizers, properties);
35 }
36 }