我正在努力地将Spring组件@Autowired引入我的自定义反序列化器。
示例:
@JsonDeserialize (using = SomeClassJsonDeserializer.class)
SomeClass {
[...]
}
@JsonComponent
SomeClassJsonDeserializer extends JsonDeserializer<SomeClass> {
@Autowired
private SomeService service;
@Override
public SomeClass deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
[...]
// this.service is null
}
}我发现了两种可能的解决方案,但对我来说根本行不通:
在Deserializer
我只使用上面示例中显示的那些Jackson注释来“配置”Jackson解析。除了默认的SpringBoot自动配置之外,没有任何其他自定义配置影响到Jackson。当使用@EnableWebMvc (破坏了Spring的自动配置,所以我不想使用它)时,组件连接就会像预期的那样工作。
对于带有默认自动配置的普通Spring,有任何官方/推荐的解决方案吗?
发布于 2020-06-15 12:48:48
问题在于我如何使用Spring的RestTemplate。
对于远程调用,我通过构造器调用(新的RestTemplate())创建了一个新的RestTemplate实例。通过这种方式,Spring无法正确地配置RestTemplate - bean (这样,SpringBoot自动配置和SpringBoot自动配置'connect‘在一起,从而导致Spring在定制的Jackson组件中工作)。
我只需@Autowire提供的RestTemplateBuilder bean实例,然后调用RestTemplateBuilder.build()来创建由RestTemplate创建的RestTemplate bean实例。
https://stackoverflow.com/questions/62175727
复制相似问题