Окрім усіх наведених вище відповідей, не забувайте про частину документації, яка говорить
Анотація маркера, яка може бути використана для визначення нестатичного методу як "сеттера" або "getter" для логічного властивості (залежно від його підпису), або нестатичного об'єктного поля, яке буде використовуватися (серіалізоване, десеріалізоване) як логічне майно.
Якщо 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як зазначено у вищезазначеній документації .