Как вызвать методы после того, как служба отдыха сериализует JSON-запрос в POJO? - PullRequest
0 голосов
/ 27 июня 2018

MyPojo.java

public class MyPojo
{
    private String str1;
    private String str2;
    private String str3;

    //setters
    //getters
}

RestController

@RestController
public class MyController 
{
    public @ResponseBody
    String getDetails(@RequestBody MyPojo myPojo) 
    {

    }
}

JSONRequest

{
    "str1" : "value1",
    "str2" : "value2"
}

Теперь, когда я делаю вызов API из почтальона и устанавливаю точку останова в первой строке контроллера, я вижу, что переменная RequestBody myPojo была сериализована и имеет значения для двух переменных. который работает правильно для меня.

Теперь мне нужны некоторые функции, такие как, где я могу вызвать метод, который берет значение из str1 и str2 и устанавливает str3 со значением сцепленных str1 и str2.

что я пытаюсь 1: сделал POJO компонентом @Component, но он инициализирует значение, пока загружается контекст, и в то время объект пуст

Есть ли способ назначить объединенное значение для str3 после получения запроса в API?

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете использовать @JsonGenerator в своем конструкторе для решения этой проблемы:

@JsonGenerator
public MyPojo(@JsonProperty("str1") String str1, @JsonProperty("str2") String str2) {
    this.str1 = str1;
    this.str2 = str2;
    this.str3 = str1 + str2;
}

Джексон (десериализатор, используемый Spring) вызовет этот конструктор, если присутствует аннотация @JsonGenerator. Аннотации @JsonProperty указывают, в каком порядке значения должны быть переданы в конструктор.

Если вы действительно хотите объединить только str1 и str2 и сохранить их как str3, вы также можете их инициализировать лениво в getter :

public String getStr3(){
    if(str3 == null){
        str3 = str1 + str2;
    }
    return str3;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...