QUARKUS - MicroProfile REST 客户端:添加一个自定义的、未映射的字段

QUARKUS - MicroProfile REST Client: add a custom, not mapped field

我正在按照这篇文章 https://quarkus.io/guides/rest-client 构建一个 REST 客户端来解析 restcountries.eu 服务的输出。 这里 class 持有模型:

public class Country {

    public String name;
    public String alpha2Code;
    public String capital;
    public List<Currency> currencies;

    public static class Currency {
        public String code;
        public String name;
        public String symbol;
    }
}

现在,假设我想添加一个自定义字段,例如时间戳,以记录创建此对象的瞬间。我想,我会继续添加另一个字段,如下所示:

 public class Country {
    
        public String name;
        public String alpha2Code;
        public String capital;
        public List<Currency> currencies;
        public Instant timestamp;  //<--------- added attribute
       [....]

我的问题是:如何让客户填写该字段?通常,我会在构造函数中完成它。但是,我找不到解释这部分的文档。

感谢您的帮助

西蒙

您实际上可以在 default 构造函数中执行此操作。 JSONB 或 Jackson 等框架期望 POJO 具有默认构造函数。他们将在创建 Country.

的实例时调用它

使用 @JsonbTransient @JsonIgnore 注释将 POJO 的该属性标记为可忽略,以避免解组器抱怨不能被忽略的属性在响应中找到。

 @Data
 public class Country {
    
        private String name;
        private String alpha2Code;
        private String capital;
        private List<Currency> currencies;
        @JsonbTransient // if you're using JSONB (default in Quarkus)
        @JsonIgnore // if you're using Jackson
        private Instant timestamp;

        public Country() {
            this.timestamp = Instant.now();
        }

PS 您应该考虑使用 @Data 注释。封装不是坏事,但创建 getters/setters 很乏味。但是 Project Lombok 在这里肯定有帮助。