Spring Boot 在拦截器中获取 Controller 中的注解
Spring Boot 大约 1143 字需求
在HandlerInterceptor
拦截器中获取Controller
中的注解,判断是否标注了注解,获取注解中的值等。
实现
自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RateLimiter {
}
标注 Controller
@RequiredArgsConstructor
@RestController
public class LoginController {
private final LoginService loginService;
@RateLimiter
@PostMapping(value = "/login")
public Credentials login(@RequestBody Identity identity) {
return loginService.login(identity);
}
}
获取注解
当在HandlerInterceptor
注入在Spring MVC
时,他的参数Object handler
类型是HandlerMethod
。
使用HandlerMethod
可以获取Controller
中的诸多元信息,包括注解、方法名、参数类型等。
@Slf4j
public class RateLimiterInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod hm) {
if (hm.hasMethodAnnotation(RateLimiter.class)) {
RateLimiter limiter = hm.getMethodAnnotation(RateLimiter.class);
// TODO
}
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}
阅读 1247 · 发布于 2023-02-05
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
TypeScript 相关知识点阅读 567
-
PowerShell 使用 wget 只输出信息不下载问题阅读 4092
-
Android ScrollView 滑动到底部阅读 3735
-
软考:系统架构设计师-性能监测方法阅读 1354
-
PHP 字段对应 MySQL 字段阅读 1969
-
Windows 平台 lua-resty-upload 上传的文件无法打开阅读 2050
-
PostgreSQL 修改字段属性阅读 2693
-
Spring Boot2 关闭 Spring Security 权限验证阅读 15960
-
Linux uniq 命令简单使用阅读 3175
-
Android 监听 Home 键阅读 1952