使用WebFilter 和 @ServletComponentScan 实现了自定义filter 怎么拿到默认的参数

使用 FilterRegistrationBean的getInitParameters()方法可以获得 但是不能实例化一个FilterRegistrationBean 请问怎么处理



你试试看用泛型注入你的FilterRegistrationBean

@Autowired
FilterRegistrationBean<MyFilter> filterRegistrationBean;

这种问题不要截图,要贴代码。 想帮你的人没法复制你的代码帮你调试。

最后再不济,你直接反射读取这个Filter类上的注解,通过注解读取到这个属性也可以实现。

好的 知道了 以后有问题贴代码

1 个赞

你说的这种反射获取 Filter 类上的注解,通过注解读取到这个属性 怎么实现呢

很简单,反射就行

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpFilter;

@WebFilter(initParams = {
        @WebInitParam(name = "name", value = "SpringBoot中文社区"),
        @WebInitParam(name = "url", value = "https://springboot.io")
})
class MyFilter extends HttpFilter{ }

public class MainTest {

    public static void main(String[] args) throws IllegalAccessException {
        WebFilter webFilter = MyFilter.class.getAnnotation(WebFilter.class);
        WebInitParam[] webInitParams = webFilter.initParams();
        for (WebInitParam webInitParam : webInitParams){
            String name = webInitParam.name();
            String value = webInitParam.value();
            System.out.println(name + "=" + value);
        }
    }
}

name=SpringBoot中文社区
url=https://springboot.io

看懂了 谢谢啦