我们在使用 JsonSerializer 和 Spring 自动装配时遇到了同样的问题。对我们有用的解决方案是创建两个构造函数。一个用于将依赖项设置为静态字段的 Spring,另一个用于 Jackson 初始化。
这是因为 Spring 依赖注入(自动装配)发生在 Jackson 初始化序列化器之前。
@Component
public class MyCustomSerializer extends JsonSerializer<String> {
private static IDesignService designService;
// Required by Jackson annotation to instantiate the serializer
public MyCustomSerializer() { }
@Autowired
public MyCustomSerializer(IDesignService designService) {
this.designService = designService;
}
@Override
public void serialize(String m, JsonGenerator gen, SerializerProvider s) {
gen.writeObject(MyCustomSerializer.designService.method(..));
}
}