元の回答
フィルターは ContextLoaderListener からロードされた ApplicationContext を使用するため<init-param>
、フィルターへの は使用されません。代わりに、ContextLoaderListener のプロファイルをアクティブ化する方法の 1 つを使用する必要があります。1 つの方法は、以下に示すように a を使用することです。
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>secured</param-value>
</context-param>
ファローアップ
コメントをもとにフォローアップ。web.xml は常にデリゲートをロードしようとする DelegatingFilterProxy を常にロードするため、Spring プロファイルを使用して Filter を省略する方法はありません。デリゲートが見つからない場合、エラーが発生します。代わりに、以下に示すように、Spring Security を無効にするプロファイルを作成できます。
<b:beans profile="default,secured">
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user" password="password" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</b:beans>
<b:beans profile="insecure">
<http security="none" />
</b:beans>
以下に示すように、web.xml で安全でないプロファイルを有効にすることで、Spring Security を無効にすることができます。
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>insecure</param-value>
</context-param>
Spring Security を使用していない場合は、何もしない Filter を作成して FilterChain を続行し、それを無効なプロファイルに配置することで、Filter を無効にすることができます。例えば:
public class DoFilterChainFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
}
public void destroy() { }
public void init(FilterConfig filterConfig) throws ServletException { }
}