Абстрактный класс для HTTP-запросов весной MVC, содержащий заголовки из запроса - PullRequest
0 голосов
/ 30 марта 2020

У меня есть класс @RestController, который включает пару @RequestMapping, каждый из которых имеет свой тип аргумента, отличный от @RequestBody, и все эти классы запросов наследуют один и тот же абстрактный класс, например:

public class RequestA extends Request {
 ...   
}

public class RequestB extends Request {
...
}

public abstract class Request {
    private String myHeader;
}

И это мой контроллер:

@RestController
public class MyController {

    @RequestMapping("A")
    public Response requestA(@Valid @ResponseBody RequestA request) {
        ...
    }

    @RequestMapping("B")
    public Response requestB(@Valid @ResponseBody RequestB request) {
        ...
    }

}

Я хочу перехватить все эти запросы перед тем, как перейти к этим методам, и заполнить некоторые поля из абстрактного класса значениями из заголовков http-запросов. Я sh, чтобы избежать написания этого кода для каждого запроса, я sh должен иметь один код, который обрабатывает все запросы контроллера, во-вторых, мне нужно, чтобы этот код запускался до кода подтверждения запроса с момента проверки зависит от этих заполненных полей из абстрактного класса.

Я пытался использовать @ModelAttribute, но безуспешно этот код не работает:

@ModelAttribute
@ResponseBody
private Request populate(
@RequestBody(required = false) Request request,
@RequestHeader(required = false, name = "My-Header") String myHeader) {
    if (request != null) {
        request.setMyHeader(myHeader);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...