Springboot通过自定义注解绑定Filter与Handler
简介
利用Jersey框架开发Restful Web服务时,对于过滤器组件, Jersey提供名称绑定的方式,我们可以灵活的配置过滤器。通过在过滤器和资源上添加同样的自定义名称注解,来绑定过滤器和特定资源,方便直观。
在Springboot中,只能在注册过滤器时指定需要过滤或者不需要过滤的请求地址的方式来过滤特定资源,或者在过滤器的实现中通过硬编码的方式实现更复杂的过滤规则,例如过滤POST请求,放行GET请求等。但是这种方式不够直观,更新过滤规则需要修改代码,也很不方便。
本文主要是在Springboot中提供实现类似的名称绑定方案。类名称大都沿用javax.ws.rs中相同的名称,实现的不够全面,而且只提供请求过滤的实现,但是基本可以满足大多数应用场合。使用者也可以自行进行修改完善。文末提供源码下载链接,同时提供了具体的应用项目示例。
使用步骤(示例)
定义名称注解@Authorization
使用Java标准的注解定义方式,定义一个运行时的、可以作用于方法和类上的注解。
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Authorization {
}
定义 Filter实现用户权限认证
通过实现接口ContainerRequestFilter实现@Authorization注解的具体