此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
拦截 器
在 Java 配置中,您可以注册拦截器以应用于传入请求,例如 以下示例显示:
-
Java
-
Kotlin
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LocaleChangeInterceptor());
registry.addInterceptor(new ThemeChangeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
}
}
@Configuration
@EnableWebMvc
class WebConfig : WebMvcConfigurer {
override fun addInterceptors(registry: InterceptorRegistry) {
registry.addInterceptor(LocaleChangeInterceptor())
registry.addInterceptor(ThemeChangeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**")
}
}
以下示例显示了如何在 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:interceptors>
拦截器并不适合作为安全层,因为可能存在 与带注释的 controller path 匹配不匹配。通常,我们建议使用 Spring 安全性,或者与 Servlet 过滤器链集成的类似方法, 并尽早申请。 |
XML 配置将拦截器声明为MappedInterceptor beans 的
回合HandlerMapping bean,包括来自其他框架的 bean。
相比之下,Java 配置仅将拦截器传递给HandlerMapping 它管理的豆子。
在 Spring MVC 和其他框架中重用相同的拦截器HandlerMapping 带有 MVC Java 配置的 bean,要么声明MappedInterceptor beans (不要
在 Java 配置中手动添加它们),或者在
Java 配置和其他HandlerMapping 豆。 |