我通过反复试法找到杰克逊自定义解决方案(Jackson2ObjectMapperBuilder enable field visibility ANY)。
还有一些问题:
@EnableWebMvc
@Bean
如果我将@Configuration
从WebMvcConfigurerAdapter
扩展到ObjectMapper, MappingJackson2HttpMessageConverter
类,那么它是否无法正常工作?我将断点放到主ObjectMapper
构造函数中,并在简单的spring boot web mvc应用程序中找到
MappingJackson2HttpMessageConverter
创建了9次!
@Autowired
创建了8次!
为什么呢?为什么ObjectMapper
snapshot3d(filename = '../Plots/SnapshotPlots.png', fmt = 'png')
期间没有歧义?
所有这些问题都可以单一表达:是否有任何文档可以了解所有这些配置如何协同工作?
答案 0 :(得分:3)
为什么在我删除
之前它不起作用@EnableWebMvc
当您使用@EnableWebMvc
时,您告诉Spring Boot您希望完全控制配置Spring MVC。这在Spring Boot reference documentation中有所说明,“完全控制MVC配置的最简单方法是为您自己的@Configuration
提供@EnableWebMvc
注释。这将使所有MVC配置保持不变你的手。“
我把断点放到主要的ObjectMapper,MappingJackson2HttpMessageConverter构造函数中,并在简单的spring boot web mvc应用程序中找到
ObjectMapper创建了9次!
MappingJackson2HttpMessageConverter创建了8次!
为什么呢?
Spring MVC(和其他人)创建了许多默认的ObjectMapper
和MappingJackson2HttpMessageConverter
实例。然后根据需要自定义或由Spring Boot替换默认实例。
为什么在@Autowired for ObjectMapper期间没有歧义?
自动装配仅关心作为Spring bean的类的实例。如果一个实例已经创建并且没有作为Spring bean公开,那么自动装配将对它一无所知。
所有这些问题都可以单一表达:是否有任何文档可以了解所有这些配置如何协同工作?
Spring Boot reference guide涵盖了很多内容。除了上面链接的@EnableWebMvc
部分之外,the appendix that lists all of the auto-configuration classes也可能会引起关注。最后,为了理解@Autowired
之类的工作原理,我建议您阅读Spring Framework reference guide。
答案 1 :(得分:0)