web-dev-qa-db-ja.com

Path-PatternによってSpring Request HandlerInterceptorを除外する

異なるインターセプターに異なるURLをマッピングすることも、単一のインターセプターに複数のURLをマッピングすることもできます。除外オプションもあるかどうか知りたいです。たとえば、アプリケーションに50個のURLマッピングがあり、1個のマッピングを除いて、49個のマッピングの構成を記述するのではなく、すべてのインターセプターを呼び出したい場合、*と50個目のURLを除外するだけでいいですか?

8
Ron Zoosk

HandlerInterceptorsは、(複数の)特定のURLまたはURLパターンに適用または除外できます。

MVC Interceptor Configuration を参照してください。

ここにドキュメントの例があります

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LocaleInterceptor());
        registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");

        // multiple urls (same is possible for `exludePathPatterns`)
        registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*", "/admin/**", "/profile/**");
    }
}

またはXML構成を使用

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <mvc:exclude-mapping path="/admin/**"/>
        <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"/>
    </mvc:interceptor>
    <mvc:interceptor>
        <!-- intercept multiple urls -->
        <mvc:mapping path="/secure/*"/>
        <mvc:mapping path="/admin/**"/>
        <mvc:mapping path="/profile/**"/>
        <bean class="org.example.SecurityInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
27
fateddy