反序列化中的自动装配 class
Autowire in deserialization class
如何在反序列化中自动装配class?
这是映射 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;
}
}
所以我使用 jackson 将对象映射到这个 class,使用这行代码:
Container[] containers = syncRestTemplate.getForObject(address + "json", Container[].class);
然后我有一个数组,我需要为每个容器做一些计算,如果我可以自动装配 CalcResourceUsage
和 AverageResourceUsage
,我可以为每个容器做一些计算。
目前 getAverageResourceUsage()
和 getCalcResourcePercentage()
return null
可以将反序列化后的对象传递给AutowireCapableBeanFactory
进行布线(使用autowireBean()
方法)。
示例:
@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.
}
}
如何在反序列化中自动装配class?
这是映射 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;
}
}
所以我使用 jackson 将对象映射到这个 class,使用这行代码:
Container[] containers = syncRestTemplate.getForObject(address + "json", Container[].class);
然后我有一个数组,我需要为每个容器做一些计算,如果我可以自动装配 CalcResourceUsage
和 AverageResourceUsage
,我可以为每个容器做一些计算。
目前 getAverageResourceUsage()
和 getCalcResourcePercentage()
return null
可以将反序列化后的对象传递给AutowireCapableBeanFactory
进行布线(使用autowireBean()
方法)。
示例:
@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.
}
}