如何获取 Spring 4.1 之前使用的 Jackson ObjectMapper?

2022-08-31 12:17:22

Spring 4.1 实例化 Jackson 实例化。我有理由将该实例放入我的一个控制器中:控制器使用Jackson自己进行了一些小的JSON解析,但它使用的应该是Spring本身使用的相同实例。我该如何做到这一点?ObjectMapper@AutowireObjectMapper

请注意,我不是在问如何自定义配置Spring使用的;我对默认值感到满意。我只想将Spring out使用的实例钓鱼,以便我可以在自己的代码中重用现有实例。ObjectMapper


答案 1

如果您在类路径上将 Spring Boot 与 Jackson 一起使用,并在 REST 控制器中使用 JSON 解析的默认实现,那么这应该有效:

@Autowired
private ObjectMapper jacksonObjectMapper;

答案 2

正如其他人所说,你不能直接进入你的控制器。@Autowired

@Emerson Farrugia 的建议,即使用以下命令创建新实例

Jackson2ObjectMapperBuilder.json().build()

对我来说也不起作用,因为获得的实例不遵循配置属性,我需要它。spring.jackson.*


我发现的解决方案是从Spring's获得可注射的ObjectMapper。MappingJackson2HttpMessageConverter

所以我自动连接了它:

@Autowired
private MappingJackson2HttpMessageConverter springMvcJacksonConverter;

然后从中获取对象映射器,如下所示:

ObjectMapper objectMapper = springMvcJacksonConverter.getObjectMapper();

此实例的行为与Spring MVC自己的消息转换完全相同 - 无论如何,它可能是相同的实例。