问题描述:
在web项目的web.xml中配置的过滤器Filter中经常会设置一些初始化参数init-param,其值基本上都是写死的,现在想从外部properties配置文件中去获取这些对应的参数值,应该怎么操作呢?
例如:在做CAS单点登录时,需要配置CAS服务器的地址,及客户端系统的地址,这两个地址直接写死在web.xml中的话,针对不同的客户系统,每次上线都需要手工修改这两个值,现在想从外部properties配置文件中读取这两个值
实现方法:
新增一个类WebApplicationInitializer,继承AbstractAnnotationConfigDispatcherServletInitializer,重新方法onStartup(),在该方法中通过FilterRegistration进行注册Filter,注册Filter时针对其中的init-param值可以从外部properties文件中读取出来,然后设置到Filter中;具体实现方式如下所示,这样可以通过硬编码的形式实现过滤器的零配置化。
@Component
public class WebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
private static final Logger LOGGER = Logger.getLogger(WebApplicationInitializer.class);
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
String path = LoadProperties.getPath();
Properties properties = LoadProperties.loadProperties(path + "/default_setting.properties");
String casServerLoginUrl = "", casServerUrlPrefix = "", serverName