Autowire反序列化类 [英] Autowire in deserialization class
本文介绍了Autowire反序列化类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在反序列化类内部自动布线?
How to autowire inside deserialization class?
这是映射类:
@Component
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(PropertyNamingStrategy.PascalCaseStrategy.class)
public class Container {
@Autowired
private CalcResourceUsage calcResourcePercentage;
private ContainerStats containerStats;
@Autowired
private AverageResourceUsage averageResourceUsage;
public Container(){
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
private String Id;
private List<String> Names;
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public List<String> getNames() {
return Names;
}
public void setNames(List<String> names) {
Names = names;
}
public CalcResourceUsage getCalcResourcePercentage() {
return calcResourcePercentage;
}
public AverageResourceUsage getAverageResourceUsage() {
return averageResourceUsage;
}
public ContainerStats getContainerStats() {
return containerStats;
}
public void setContainerStats(ContainerStats containerStats) {
this.containerStats = containerStats;
}
}
因此,我使用杰克逊使用以下代码行将对象映射到此类中:
So I use jackson to map objects into this class, using this line of code:
Container[] containers = syncRestTemplate.getForObject(address + "json", Container[].class);
然后我有一个数组,其中需要为每个容器进行一些计算,如果可以自动连接CalcResourceUsage
和AverageResourceUsage
,则可以为每个容器进行一些计算.
Then I have an array where for each container I need to do some calculations and if I can autowire CalcResourceUsage
and AverageResourceUsage
, I can do some calculations for each container.
当前getAverageResourceUsage()
和getCalcResourcePercentage()
返回null
推荐答案
您可以将反序列化的对象传递给AutowireCapableBeanFactory
进行布线(使用autowireBean()
方法).
You can pass the deserialized objects to AutowireCapableBeanFactory
for wiring (use autowireBean()
method).
示例:
@Autowired
private AutowireCapableBeanFactory beanFactory;
public void doDeserialization() {
Container[] containers = // get them via jackson
for (Container container : containers) {
beanFactory.autowireBean(container);
// container will now have its dependencies autowired.
}
}
这篇关于Autowire反序列化类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文