我反序列化一个 json,然后想在构造函数之后通过注释或其他方式调用 postProcess 方法?
json 文件:
{
"type": "storeType",
"name": "store-name",
"list": [
{
"type": "itemType",
"name": "item1-name",
},
{
"type": "itemType",
"name": "item2-name",
}
]
}
商店.类:
Store extends AbstractClass{
@Value("${store.size:100000}")
private Integer size;
@Autowired
private StorePersistency persistency;
private String name;
private List<abstractClass> list;
public Store(@JsonProperty("name") String name, @JsonProperty("list") list) {
this.name=name;
this.list=list;
}
@Override
public postProcess(){
...
}
}
项目.类:
Item extends AbstractClass{
private String name;
public Store(@JsonProperty("name") String name) {
this.name=name;
}
@Override
public postProcess(){
...
}
}
解串器服务:
AbstractClass clzz = objectMapper.readValue(jsonFile, AbstractClass.class)
目的是@authowire和@value其他类字段(StorePersistency 和大小)通过在 postProcess 方法中调用 authowireService 来实现。
Authowire服务:
public void authowireBean(Class clzz){
applicationContext.getAutowireCapableBeanFactory().autowireBeanProperties(clzz, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
}
最佳答案
您绝对应该将 POJO
与持久层和服务层解耦。对于持久层,您可以使用 DAO pattern在您的情况下,这可能由 StorePersistency
类表示。您需要创建实现 postProcess 的服务层。请参阅Responsibilities and use of Service and DAO Layers了解更多信息。您的案例中的示例服务层可能如下所示:
@Component
class StoreService {
@Value("${store.size:100000}")
private Integer size;
@Autowired
private StorePersistency persistency;
public postProcess(Store store) {
...
}
}
关于java - 有没有办法在反序列化后调用承包商之后的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753753/