对于最新的稳定版本,请使用 Spring Framework 6.2.10spring-doc.cadn.net.cn

拦截 器

在 Java 配置中,您可以注册要应用于传入请求的拦截器,如 以下示例显示:spring-doc.cadn.net.cn

@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 中实现相同的配置:spring-doc.cadn.net.cn

<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>
拦截器不适合作为安全层,因为 与带注释的控制器路径匹配不匹配。通常,我们建议使用 Spring 安全性,或者与 Servlet 过滤器链集成的类似方法, 并尽早应用。
XML 配置将拦截器声明为MappedInterceptor豆子,而那些在 任何HandlerMappingbean,包括来自其他框架的那些。 相比之下,Java 配置仅将拦截器传递给HandlerMapping它管理的豆子。 在 Spring MVC 和其他框架中重用相同的拦截器HandlerMappingbean 与 MVC Java 配置,声明MappedInterceptor豆子(和不要 在 Java 配置中手动添加它们),或在两者中配置相同的拦截器 Java 配置和其他HandlerMapping豆。