В дополнение ко всем ответам выше, не забывайте часть документации, которая говорит
Аннотация маркера, которая может использоваться для определения нестатического метода в качестве «установщика» или «получателя» для логического свойства (в зависимости от его сигнатуры) или поля нестатического объекта, которое будет использоваться (сериализовано, десериализовано) в качестве логического свойство.
Если 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как упомянуто в выделенной выше документации ,