DefaultJackson2ObjectMapperBuilderCustomizer.java
package top.infra.jackson2;
import static java.util.stream.Collectors.toList;
import com.google.common.collect.ImmutableList;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.core.OrderComparator;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.util.List;
@Slf4j
public class DefaultJackson2ObjectMapperBuilderCustomizer implements Jackson2ObjectMapperBuilderCustomizer {
private final List<Jackson2Customizer> customizers;
private final Jackson2Properties properties;
public DefaultJackson2ObjectMapperBuilderCustomizer(final List<Jackson2Customizer> customizers, final Jackson2Properties properties) {
this.customizers = customizers != null ?
customizers.stream().sorted(OrderComparator.INSTANCE).collect(toList()) :
ImmutableList.of();
this.properties = properties;
}
@Override
public void customize(final Jackson2ObjectMapperBuilder builder) {
this.customizers.forEach(customizer -> customizer.customize(properties, builder));
log.info("done.");
}
}