我假设您正在使用Jersey 2.x(JAX-RS 2.0 API的实现)。
您有两种方法可以实现自己的目标。
1.使用名称绑定:
1.1创建使用@NameBinding注释的自定义注释:
@NameBinding@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface AnnotationForResourceOne {}1.2。使用您的注释创建过滤器:
@Provider@AnnotationForResourceOnepublic class ResourceoneFilter implements ContainerRequestFilter {...}1.3。并将创建的过滤器与所选资源方法绑定:
@Path("/resources")public class Resources { @GET @Path("/resourceOne") @AnnotationForResourceOne public String getResourceOne() {...}}2.使用DynamicFeature:
2.1。创建过滤器:
public class ResourceoneFilter implements ContainerRequestFilter {...}2.2。实现javax.ws.rs.container.DynamicFeature接口:
@Providerpublic class MaxAgeFeature implements DynamicFeature { public void configure(ResourceInfo ri, FeatureContext ctx) { if(resourceShouldBeFiltered(ri)){ ResourceoneFilter filter = new ResourceoneFilter(); ctx.register(filter); } }}在这种情况下:
- 过滤器未使用注释进行
@Provider
注释; configure(...)
对每个资源方法都调用该方法;ctx.register(filter)
用资源方法绑定过滤器;



