首页 > 解决方案 > 如何注册 ContainerRequestFilter 并将变量传递给它?

问题描述

有没有办法将 ContainerRequestFilter 注册到 ResourceConfig 并将变量传递给它的构造函数?

以下是过滤器代码

public class TestRequestFilter implements ContainerRequestFilter{
   String operationType;

   public TestRequestFilter (){}

   public TestRequestFilter (String opType){
      this.operationType = opType;
   }
   
   @Override
   public void filter(ContainerRequestContext requestContext) {
    // TODO Auto-generated method stub
    
   }
}

为了注册这个过滤器,我使用了 ResourceConfig 如下

public class MyApplication extends ResourceConfig {

/**
 * Register JAX-RS application components.
 */
public MyApplication () {
    register(TestRequestFilter.class);
    register(JacksonFeature.class);
    register(CustomerResource.class);
    register(Initializer.class);
    register(JerseyResource.class);
}
}

有什么方法可以用 opType 构造函数注册这个过滤器吗?

标签: javarestservletsjerseyjax-rs

解决方案


使用单个构造函数创建类,创建对象并注册创建的对象。

public class TestRequestFilter implements ContainerRequestFilter{
   private String operationType;

   public TestRequestFilter (String opType){
      this.operationType = opType;
   }
   
   @Override
   public void filter(ContainerRequestContext requestContext) {
       //your code
   }
}

登记:

ResourceConfig.register(new TestRequestFilter("osType"));

推荐阅读