【发布时间】:2017-10-06 07:46:30
【问题描述】:
我正在使用 Jersey(JaxRS 和 Jackson)。
我有一个学生 DTO。
class StudentDTO {
private Integer id;
private String name, className, grade;
private String createdAt, modifiedAt;
// getter, setter for all private members above
我希望在创建、读取和更新时重用该 DTO。
但是,对于创建,只允许 name、className 和grade。对于更新,只允许 className 和grade。
我目前的解决方案是使用三种不同的 DTO 类,一种用于创建,一种用于更新,一种用于读取。
如何只用一个 DTO 类来做到这一点?
【问题讨论】:
-
您可以尝试使用所需的参数重载构造函数..
-
重载构造函数不能用于过滤请求参数。 Jackson 将映射到类成员,即使它们是私有的,而不是 getter/setter/constructor。
-
我个人认为3个DTO在语义上比较好。它提供了 API 的正确文档,而不必记住在每种情况下应该存在或不应该存在哪些字段。我的两分钱;)另外,如果您可以使它们不可变...
标签: java jackson jersey jax-rs n-tier-architecture