インターセプター

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。