我目前正在编写一种框架,使得其他人可以为其编写REST控制器。自然而然地,我希望这些“其他人”尽可能少地与我的代码互动。
具体来说,我想并且需要在请求被REST控制器处理之前访问请求数据(即
考虑以下代码:
现在我需要的是能够自动调用
此外,这个拦截器类还应该创建和配置一个对象,然后再将其提供给其余的控制器。
我想的是这样的:
具体来说,我想并且需要在请求被REST控制器处理之前访问请求数据(即
RequestEntity
)。有点像在控制器处理请求之前“拦截”请求,然后才让控制器处理它。考虑以下代码:
@RestController
@RequestMapping("/")
public class MyController {
@GetMapping("/")
@ResponseBody
public ResponseEntity<String> getSomething(RequestEntity requestEntity) {
MyClass.doStuffWithRequestEntity(requestEntity);
// ...
现在我需要的是能够自动调用
ExternalClass.doStuffWithRequestEntity(requestEntity);
的方法,而不需要显式地调用它。是否有可能在某个类中调用某个方法(同时将 RequestEntity 传递给它!)而无需显式调用它?此外,这个拦截器类还应该创建和配置一个对象,然后再将其提供给其余的控制器。
我想的是这样的:
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();
}
}
在处理之前执行。
这个想法是每一个(!)传入的请求都被解析并且它的内容被编码,而不需要rest控制器程序员关心这一点。他们只需要通过MyClass实例访问数据。
有没有办法做到这一点?