假设我有一个标记为deprecated的端点:
@RestController
class MyController {
@GetMapping("/api/hello")
@Deprecated(forRemoval = true)
public String hello() {
return "Hello, world";
}
}
字符串
我也使用SpringDoc来生成OpenAPI规范。因此,这个端点在规范中也应该被标记为已弃用(由于@Deprecated
注解的存在)。
我想添加一个MVC过滤器,如果端点被弃用,它会添加自定义响应头X-Deprecated
。所以,客户端会知道它正在使用一些弃用的端点。
你有什么想法如何实现它?我知道@Deprecated
注解有RUNTIME
保留策略,我可以用反射API解析它。但是,我不知道如何制定通用的解决方案。
2条答案
按热度按时间n9vozmp41#
您可以在拦截器中使用
Object handler
字符串
然后注册到
WebMvcConfigurer
型
ztyzrc3y2#
您可以使用 Spring AOP 在
@Deprecated
annotation上创建@After
Pointcut。在方法执行中,然后您可以添加所需的header如果你需要更多关于 AOP 的信息,请查看:Implementing a Custom Spring AOP Annotation