Spring 如何在web.xml中有条件地启用/禁用筛选器

Spring 如何在web.xml中有条件地启用/禁用筛选器,spring,spring-mvc,spring-security,Spring,Spring Mvc,Spring Security,我正在使用SpringMVC。我有一个web.xml和一个myapp.xml。在myapp.xml中,我利用了Springbeans概要文件。因此,我有两个配置文件dev和test。每个bean都有基于环境变量启动的不同bean 我想知道在web.xml中是否可以做类似的事情?在web.xml中,我只想在环境变量为test <filter> <filter-name>springSecurity</filter-name> <filter

我正在使用SpringMVC。我有一个
web.xml
和一个
myapp.xml
。在
myapp.xml
中,我利用了Springbeans概要文件。因此,我有两个配置文件
dev
test
。每个bean都有基于环境变量启动的不同bean

我想知道在
web.xml
中是否可以做类似的事情?在web.xml中,我只想在环境变量为
test

<filter>
    <filter-name>springSecurity</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurity</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

springSecurity
org.springframework.web.filter.DelegatingFilterProxy
springSecurity
/*

我该怎么做

不直接
web.xml
是一种非常静态的格式


通常的解决方法是安装一个代理注入bean的过滤器,然后使用概要文件替换这个bean。

在您的例子中,您已经使用了
DelegatingFilterProxy
,它将实际处理委托给名为
springSecurity
的springbean


因此,您需要用
dev
配置文件中声明为
springSecurity
Filter
的无操作实现替换Spring安全配置。

您可以在web.xml(和server.xml)中使用属性变量替换:


bin/setenv.bat中(您需要创建此文件)。*nix中的类似功能

那个定制过滤器是什么样子的?你能给我举几个例子吗?现在我已经在web.xml中完整地注释了这个过滤器,当它处于开发模式时,一切都正常。你能详细说明一下无操作实现吗?一个在其
doFilter()
方法中调用
chain.doFilter()
的实现。因此,我将创建一个
Filter
的无操作实现,比如
MyFilter
,并在
dev
配置文件中以
springSecurity
的形式启动它,作为
?您还可以使
MyFilter
基于某些条件创建一个过滤器,并让该实例处理过滤。这是Sitemesh 3的一部分,可能与
<url-pattern>${urlPattern}</url-pattern>
set "CATALINA_OPTS=-DurlPattern=%SOME_SYSTEM_ENVIRONMENT_VARIABLE%"