java filter过滤器中 注入配置文件properties获取配置文件中的值

想要获取application.properties中自定义的test.testUrl值

test.testUrl=/test/testUrl

一般在实体中加入@Vaule 注解就可生效

@Value("test.testUrl")
private String testUrl;

但是在filter中 需要用上下文对象来获取
filter的生命周期如下:
web应用程序启动时,web服务器将创建Filter的实例对象
并调用其init方法,完成对象的初始化功能

从而为后续的用户请求作好拦截的准备工作
filter对象只会创建一次,init方法也只会执行一次

也就是程序刚刚启动的时候 filter就被加载了 这个时候配置文件还没有被加载到呢

具体操作如下:
在filter的init中用上下文对象来获取

    private String testUrl;


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        ServletContext sc = filterConfig.getServletContext();
        WebApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(sc);
        testUrl=cxt.getEnvironment().getProperty("test.testUrl");
    }

这样就可以获取到配置文件中的值了。

楼主用的properties文件 yml应该同理,用yml的小伙伴可以留言是否好用哈
理解不当的地方欢迎大家指出~

你可能感兴趣的:(filter,properties配置文件,java基础,java,服务器,开发语言)