基本上,我想为方法创建一个自定义注释。使用时,将添加方法参数和一行代码。
问题是:这有可能吗?
我想简化以下方法:
@GetMapping("/thing")
public ResponseEntity getThing(@CookieValue("Session-Token") String sessionToken) {
User user = authenticator.authenticateSessionTokenOrThrow(sessionToken);
... // user is successfully authenticated, get the "thing" from the database
}
到
@GetMapping("/thing")
@User
public ResponseEntity getThing() {
... // user is successfully authenticated, get the "thing" from the database
}
如何实现自定义注释@User
,以使上述两种方法的行为完全相同?? 为示例起见,请忽略以上代码是针对Spring Boot框架的事实。
答案 0 :(得分:1)
假设您有一个带有此类方法的类
class MyHandlerClass implements Whatever {
@GetMapping("/thing")
@User
public ResponseEntity getThing() {
... // user is successfully authenticated, get the "thing" from the database
}
您可以使用注释处理来生成这样的类
class AuthenticatingMyHandlerClass extends MyHandlerClass {
@GetMapping("/thing")
public ResponseEntity getThing(@CookieValue("Session-Token") String sessionToken) {
User user = authenticator.authenticateSessionTokenOrThrow(sessionToken);
ResponseEntity ret = super.getThing(sessionToken);
doSomethingWith(ret);
return ret;
}
然后,您使用生成的类而不是主类来处理请求,并且还将添加任何代码。