インターセプター

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>
インターセプターは、アノテーション付きコントローラーパスのマッチングとの不一致の可能性があるため、セキュリティレイヤーとしては最適ではありません。一般的には、Spring Security を使用するか、サーブレットフィルターチェーン と統合された同様のアプローチをできるだけ早く適用することをお勧めします。
XML 構成はインターセプターを MappedInterceptor Bean として宣言し、それらは他のフレームワークからのものを含むすべての HandlerMapping Bean によって検出されます。対照的に、Java 構成は、管理する HandlerMapping Bean にのみインターセプターを渡します。MVC Java 構成を使用して Spring MVC および他のフレームワーク HandlerMapping Bean 間で同じインターセプターを再利用するには、MappedInterceptor Bean を宣言するか (Java 構成に手動で追加しないでください)、Java 構成と Java 構成の両方で同じインターセプターを構成します。他の HandlerMapping Bean。