gpt4 book ai didi

java - 有没有办法在反序列化后调用承包商之后的方法

转载 作者:行者123 更新时间:2023-12-02 01:03:21 26 4
gpt4 key购买 nike

我反序列化一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com