上篇文章我们介绍了在Spring Boot Web中Jackson的基本使用,当使用Jackson实现Json与Bean之间转换时,最主要的类便是Jackson的ObjectMapper。当使用Spring Boot时,会自动对该类进行初始化。本篇文章,我们一探究竟,并自定义ObjectMapper来实现相应的功能。
在Spring Boot的自动配置JacksonAutoConfiguration中有这样的初始化代码:
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(Jackson2ObjectMapperBuilder.class)
static class JacksonObjectMapperConfiguration {
@Bean
@Primary
@ConditionalOnMissingBean
ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
return builder.createXmlMapper(false).build();
}
}
这段代码的基本操作就是当类路径下存在Jackson2ObjectMapperBuilder类时,该配置会自动实例化,而其内部的jacksonObjectMapper会实例化一个ObjectMapper对象来处理Json与Bean的转换。
该方法上的@ConditionalOnMissingBean说明,当不存在ObjectMapper时便执行该方法的实例化的操作,也就是说会通过Jackson2ObjectMapperBuilder来创建一个ObjectMapper对象。
换句话说,我们自己如果自定义了ObjectMapper对象,那么上述代码便不会进行相应的自动化配置。
在这里我们对在上一篇文