在web开发中通常会遇到多个环境的问题,比如开发和线上,那他们使用的配置信息也是不同的,Spring给出的解决这个问题的方法是变量替换:
<bean class="my.class.path"> <property name="env" value="${ENV}"/> </bean>
但是对于web.xml中的属性这样搞就行不通了,那简单的解决办法就是绕路了:用Spring中配置的Bean来作为Filter行不行?答案是肯定的:
<filter> <filter-name>ssoFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetBeanName</param-name> <param-value>myFilterBean</param-value> </init-param> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter>
容器初始化的顺序为Listener->Filter->Servlet,这样上面这种玩法跑通就没有问题了~