В настоящее время я пишу какую-то платформу, которая позволила бы другим писать для нее контроллеры REST.Естественно, я хочу, чтобы эти «другие» как можно меньше взаимодействовали с тем, что происходит в моем коде.
В частности, я хочу и должен получить доступ к данным запросов (т.е. RequestEntity
до того, как запрос будет обработанконтроллер остальных. В некотором смысле «перехватывает» запрос до того, как он будет обработан контроллером, и только затем позволяет контроллеру обрабатывать его.
Рассмотрим следующий код:
@RestController
@RequestMapping("/")
public class MyController {
@GetMapping("/")
@ResponseBody
public ResponseEntity<String> getSomething(RequestEntity requestEntity) {
MyClass.doStuffWithRequestEntity(requestEntity);
// ...
Что теперьМне нужно, чтобы ExternalClass.doStuffWithRequestEntity(requestEntity);
вызывался без необходимости явного вызова. Возможно ли иметь какой-либо метод в некотором вызываемом классе (с передачей ему RequestEntity!) Без необходимости явного вызова?
Кроме того, указанный класс Interceptor должен создать и настроить объект, который затем снова станет доступен для контроллера остальных.
Я бы подумал что-то вроде
class RestController {
@RestController
@RequestMapping("/")
public class MyController {
@GetMapping("/")
@ResponseBody
public ResponseEntity<String> getSomething() {
MyClass x = MyClass.getInstanceCreatedByInterceptor();
}
}
}
и
class Interceptor {
public void doStuffWithRequestEntity(requestEntity) {
MyClass x = new MyClass();
x.fillObjectWithData();
}
}
выполняется раньше.
Идея состоит в том, что КАЖДЫЙ (!) Входящий запрос анализируется и его содержимое декодируется сПрограммисту контроллера отдыха приходится вообще об этом заботиться.Они должны просто получить доступ к данным через / из экземпляра MyClass.
Есть ли способ сделать это?