有没有一种方法可以为用@Value
注释的模型下的字段提供默认值。例如:
@Value
class Book {
String title;
List<String> authors;
}
在上面的模型中,Jackson将authors从json有效载荷反序列化为null
,其中authors为null
,但我希望author将[]
作为默认值,而不是null
。我知道下面的不起作用,因为字段由于@Value
而变为private final
List<String> authors = Collections.emptyList();
我可以覆盖所有args构造函数,但模型本身相当大,所以我正在寻找类似于Builder.Default
但适用于@Value
的东西。
您可以添加自己的构造函数来初始化authors
字段。
@Value
@AllArgsConstructor
static class Book {
String title;
List<String> authors;
public Book(String title) {
this(title, Collections.emptyList());
}
}
@AllArgsConstructor
是必需的,因为添加自定义构造函数时,@Value
跳过了所有字段构造函数的生成。