如何在web.xml中有条件地启用/禁用过滤器

时间:2013-09-16 15:14:34

标签: spring spring-mvc spring-security

我正在使用Spring MVC。我有一个web.xml和一个myapp.xml。在myapp.xml我正在利用spring beans profile。所以,我有两个配置文件devtest。每个都有不同的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>

我该怎么做?

3 个答案:

答案 0 :(得分:5)

在您的情况下,您已经使用DelegatingFilterProxy将实际处理委托给名为springSecurity的Spring bean。

因此,您需要使用Filter配置文件中声明为springSecurity的{​​{1}}的无操作实现替换您的Spring Security配置。

答案 1 :(得分:2)

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

通常的解决方法是安装一个委托给注入bean的过滤器,然后使用配置文件替换这个bean。

答案 2 :(得分:2)

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

<url-pattern>${urlPattern}</url-pattern>

您将传递 JVM 参数,例如-DurlPattern="/"

您可以使用 o / s 环境变量,如下所示:

set "CATALINA_OPTS=-DurlPattern=%SOME_SYSTEM_ENVIRONMENT_VARIABLE%"
bin/setenv.bat中的

(您需要创建此文件)。类似的功能* nix。

相关问题