Spring Security 3.1 へのアップグレードは、これをきれいに行うための最良の方法です。それができない場合でも、目的の結果を得ることができますが、それほどきれいにはなりません。リソースが URL 空間できれいに分離されている場合 (そうであるように見えます)、/api リソースのみをカバーする 2 つ目の Spring Security フィルターを追加し、デフォルトのリソースの前に適用されるようにします。Spring Security 3.0 で構成を分離するには、2 番目のフィルター用に別のアプリケーション コンテキストが必要であり、よく知られた場所でそれを見つけるようにフィルターを構成します。たとえば、DispatcherServlet はコンテキストを作成し、関連する属性のサーブレット コンテキストに格納します。その名前 (以下の例では「api」):
<filter>
<filter-name>apiSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.api</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>apiSecurityFilterChain</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>api</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
この例のディスパッチャー サーブレットには/WEB-INF/api-servlet.xml
、id="apiSecurityFilter"
.