在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,这样上面这种玩法跑通就没有问题了~