获取配置文件的值
如
user:
userId: 1
一般实体中采用@Value既可获取
@Value("user.userId")
private String userId;
但是在filter中,需要用上下文对象来获取
filter的生命周期如下:
web应用程序启动时,web服务器将创建Filter的实例对象
并调用其init方法,完成对象的初始化功能
从而为后续的用户请求作好拦截的准备工作
filter对象只会创建一次,init方法也只会执行一次
也就是程序刚刚启动的时候 filter就被加载了 这个时候配置文件还没有被加载到
解决办法:通过上下文对象读取配置文件的值
yml文件配置
user:
userId: 1
Filter配置初始化时获取上下文对象,再读取配置文件值
@Override
@Override public void init(FilterConfig filterConfig){ ServletContext servletContext = filterConfig.getServletContext(); WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext); whitelistStr = ctx.getEnvironment().getProperty("ip.whitelistStr");