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

标签 java json spring jackson deserialization

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

相关文章:

java - 反序列化 JSON,其中键和值分别存储

javascript - 如何在javascript中动态地将带有数组的深层JS对象减少为没有数组的JS对象?

java - String#intern 关于实习生结果的困惑

java - 如何使用 map 中的键/值制作 JSON 字符串

Spring 批输出力 CRLF 作为行分隔符

java - Spring 动态 JPA 存储库类型

java - JPQL 连接两个表

java - 计算字母数字字符的出现次数并以图形方式打印它们

java - Prefuse 卡住 JFrame

java - 面临从二进制文件获取 double 和 int 值的问题