默认情况下,不要使用Spring Data Rest和Jpa公开Entity类中的字段

时间:2018-03-03 11:55:32

标签: java spring jackson spring-data-rest

我有一个实体类帐户。它有很多字段。现在大多数都在REST调用中暴露,除非我明确忽略了/usr/share/terminfo/的密码字段,但我将添加更多字段,我不想忘记将@JsonIgnore添加到不应该的新内容中暴露。

我是否可以反转曝光,以便我明确地必须启用要导出的字段,默认情况下它不会被曝光?

@JsonIgnore

在这里使用Spring Data REST,所以其他所有东西都只是存储库,没有额外的层来做一些聪明的事情。

1 个答案:

答案 0 :(得分:2)

Jackson

中有两种主要方法可以获得“白名单”属性效果

第一种方式:

@Data类中删除Account注释,并仅将getter添加到要公开的字段。为了确保不会排除没有getter的属性,请将@JsonIgnoreProperties(ignoreUnknown=true)添加到Account

第二种方式:

Account课程包裹您的AccountForJson课程。例如:

public class AccountForJson {

private Account account;

public MyClassForJson(Account accountToWrapped) {
    this.account = accountToWrapped;
}

/**
 * Example of property that you want to expose
 */
public String getName() {
    return this.account.getName();
 }
}

p.s:Jackson github存储库中有一个用于该功能的open issuse,这里是用于观看该问题的链接 - Add @JsonIncludeProperties(propertyNames) (reverse of @JsonIgnoreProperties)