我的一个序列化程序中有一个@Autowired,它扩展了StdSerializer
public class RefSerializer extends StdSerializer<LabeledElement> {
@Autowired
I18n i18n;
public RefSerializer() {
this(null);
}
public RefSerializer(Class<LabeledElement> t) {
super(t);
}
@Override
public void serialize(LabeledElement element, JsonGenerator generator, SerializerProvider provider) throws IOException {
String identifier = null;
String label = LabelUtils.labelPlanElement(this.i18n, planElement, "ref");
generator.writeObject(ReferenceElement.of(element.getId(), label, identifier));
}
}
并由模型类中的@JsonSerialize使用。
@JsonSerialize(contentUsing = RefSerializer.class)
@JsonDeserialize(contentUsing = PlanElementDeserializer.class)
@OneToMany(fetch = FetchType.EAGER)
private List<PlanElement> planElements;
如果在我的@RestComponent注解终结点内调用序列化程序,则会解析@Autowired,并且对于传入和返回的模型,一切都正常工作。
现在我想通过RestTemplate#交换主动发送模型,但是现在Serializer中的@Autowired为空。restTemplate.exchange(endpointUrl, httpMethod, new HttpEntity<>(planElement, authHeader), Map.class, authParameters);
是否有办法让自动配置为使用RestTemplate的传出REST调用工作?
使用Spring启动2.6.3,Java 17
1条答案
按热度按时间j2datikz1#
如果RestTemplate是由@Configuration文件中的bean提供的,如下所示:
然后在使用RestTemplate的服务内部通过@Autowired自动连接,而不是通过“new RestTemplate()”示例化,则自定义序列化程序内部的自动连接服务也可用于RestTemplates REST调用。