2.12.5. 按资源方法过滤器和 Interceptors
有时,您希望过滤器或拦截器仅针对特定资源方法运行。您可以通过两种不同的方式进行此操作:
实施 DynamicFeature Interface
DynamicFeature 接口包含回调方法,配置(ResourceInfo resourceInfo, FeatureContext context),该命令会针对每个部署的 JAX-RS 方法调用。ResourceInfo 参数包含有关当前正在部署的 JAX-RS 方法的信息。FeatureContext 是 可配置 接口的扩展。您可以使用此参数的 register() 方法绑定您要分配给此方法的过滤器和拦截器。
示例:使用动态功能接口
在上例中,您使用 AnimalTypeFeature 注册的提供程序必须实施其中一个接口。本例注册了必须实现以下接口之一的供应商 AnimalFilter : ContainerRequestFilter、ContainerInterceptor、Reader Interceptor、WriterInterceptor 或 Feature。在这种情况下,AnimalFilter 将应用到所有标有 GET 注解的资源方法。详情请参阅动态功能文档。
使用 @NameBinding 注解
@NameBinding 的工作方式与 CDI 拦截器非常相似。您使用 @NameBinding 标注自定义注释,然后将该自定义注释应用到过滤器和资源方法。
示例:使用 @NameBinding
详情请参阅 NameBinding 文档。