View Javadoc
1   package top.infra.jackson2;
2   
3   import static java.util.stream.Collectors.toList;
4   
5   import com.google.common.collect.ImmutableList;
6   
7   import lombok.extern.slf4j.Slf4j;
8   
9   import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
10  import org.springframework.core.OrderComparator;
11  import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
12  
13  import java.util.List;
14  
15  @Slf4j
16  public class DefaultJackson2ObjectMapperBuilderCustomizer implements Jackson2ObjectMapperBuilderCustomizer {
17  
18      private final List<Jackson2Customizer> customizers;
19      private final Jackson2Properties properties;
20  
21      public DefaultJackson2ObjectMapperBuilderCustomizer(final List<Jackson2Customizer> customizers, final Jackson2Properties properties) {
22          this.customizers = customizers != null ?
23              customizers.stream().sorted(OrderComparator.INSTANCE).collect(toList()) :
24              ImmutableList.of();
25          this.properties = properties;
26      }
27  
28      @Override
29      public void customize(final Jackson2ObjectMapperBuilder builder) {
30          this.customizers.forEach(customizer -> customizer.customize(properties, builder));
31          log.info("done.");
32      }
33  }