В дополнение ко всем ответам выше, не забывайте часть документации, которая говорит
Аннотация маркера, которая может использоваться для определения нестатического метода в качестве «установщика» или «получателя» для логического свойства (в зависимости от его сигнатуры) или поля нестатического объекта, которое будет использоваться (сериализовано, десериализовано) в качестве логического свойство.
Если non-static
в вашем классе есть метод, который не является традиционным, getter or setter
вы можете заставить его действовать как a getter and setter
, используя аннотацию к нему. Смотрите пример ниже
public class Testing {
private Integer id;
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getIdAndUsername() {
return id + "." + username;
}
public String concatenateIdAndUsername() {
return id + "." + username;
}
}
Когда вышеуказанный объект сериализуется, тогда ответ будет содержать
- имя пользователя от
getUsername()
- идентификатор от
getId()
- idAndUsername от
getIdAndUsername
*
Так как метод getIdAndUsername
начинается с того, что get
он рассматривается как обычный метод получения , поэтому вы можете аннотировать это с помощью @JsonIgnore
.
Если вы заметили, что concatenateIdAndUsername
оно не возвращено, и это потому, что его имя не начинается с, get
и если вы хотите, чтобы результат этого метода был включен в ответ, то вы можете использовать @JsonProperty("...")
его, и он будет рассматриваться как обычный, getter/setter
как упомянуто в выделенной выше документации ,