61.8. 动态绑定
概述 复制链接链接已复制到粘贴板!
					将容器过滤器和容器拦截器绑定到资源的标准方法是使用 @Provider 注解来注解过滤器和拦截器。这样可确保绑定为 全局 :即,过滤器和拦截器绑定到服务器端的每个资源类和资源方法。
				
					动态绑定是在服务器端绑定的替代方法,允许您选择并选择将拦截器和过滤器应用到哪些资源方法。要为过滤器和拦截器启用动态绑定,您必须实现自定义 DynamicFeature 接口,如下所述。
				
DynamicFeature 接口 复制链接链接已复制到粘贴板!
					DynamicFeature 接口在 javax.ws.rx.container 软件包中定义,如下所示:
				
实施动态功能 复制链接链接已复制到粘贴板!
您实现动态功能,如下所示:
- 
							如前面所述,实现一个或多个容器过滤器或容器拦截器。但是,请勿 通过 
@Provider注释给他们添加注释(否则,它们将全局绑定,使动态功能有效不相关)。 - 
							通过实施 
DynamicFeature类,覆盖configure方法来创建您自己的动态功能。 - 
							
在配置方法中,您可以使用resourceInfo参数来发现哪个资源类以及正在调用此功能的资源方法。您可以使用此信息来决定注册某些过滤器或拦截器的基础。 - 
							如果您决定使用当前资源方法注册过滤器或拦截器,您可以通过调用其中一个 
context.register方法来实现。 - 
							记住要使用 
@Provider注释给动态功能类添加注释,以确保它在部署的扫描阶段获取。 
动态功能示例 复制链接链接已复制到粘贴板!
					以下示例演示了如何为带有 @GET 标注的 MyResource 类(或子类)定义注册 LoggingFilter 过滤器的动态功能:
				
动态绑定过程 复制链接链接已复制到粘贴板!
					JAX-RS 标准要求为每个资源方法运行一次 DynamicFeature.configure 方法。这意味着,每个资源方法都可能具有由动态功能安装的过滤器或拦截器,但取决于每个情况下是否注册过滤器或拦截器。换句话说,动态功能支持的绑定的粒度是单个资源方法的级别。
				
FeatureContext 接口 复制链接链接已复制到粘贴板!
					FeatureContext 接口(允许您在 configure 方法中注册过滤器和拦截器)被定义为 Configurable <> 的子接口,如下所示:
				
// Java
package javax.ws.rs.core;
public interface FeatureContext extends Configurable<FeatureContext> {
}
// Java
package javax.ws.rs.core;
public interface FeatureContext extends Configurable<FeatureContext> {
}
					Configurable<> 接口定义了各种在单一资源方法上注册过滤器和拦截器的方法,如下所示: