記事ディレクトリ
前書き
WebMvcConfigurer構成クラスは、実際にはSpring
内部構成メソッドです。JavaBean
フォームを使用して、従来のxml
構成ファイルフォームを置き換え、フレームワークをカスタマイズします。一部のHandler、Interceptor、ViewResolver、およびMessageConverterをカスタマイズできます。javaベースのモードに基づくSpringMVC構成の場合、構成クラスを作成し、****WebMvcConfigurer
インターフェイスを実装する必要があります。
WebMvcAutoConfigurationは、Webプロジェクトに関するいくつかのファイルを構成するWebMvcの自動構成クラスであり、WebMvcConfigurerは、WebMvcAutoConfiguration自動構成クラスを補足するために使用されるインターフェイスです。つまり、WebMvcAutoConfigurationで考慮されない場所がある場合は、WebMvcConfigurerインターフェイスを介して拡張できます。 。
WebMvcConfigurerインターフェイス
public interface WebMvcConfigurer {
default void configurePathMatch(PathMatchConfigurer configurer) {
}
default void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
}
default void configureAsyncSupport(AsyncSupportConfigurer configurer) {
}
default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
}
default void addFormatters(FormatterRegistry registry) {
}
default void addInterceptors(InterceptorRegistry registry) {
}
default void addResourceHandlers(ResourceHandlerRegistry registry) {
}
default void addCorsMappings(CorsRegistry registry) {
}
default void addViewControllers(ViewControllerRegistry registry) {
}
default void configureViewResolvers(ViewResolverRegistry registry) {
}
default void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
}
default void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) {
}
default void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
}
default void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
}
default void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
}
default void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
}
@Nullable
default Validator getValidator() {
return null;
}
@Nullable
default MessageCodesResolver getMessageCodesResolver() {
return null;
}
}
一般的に使用される方法:
/* 拦截器配置 */
void addInterceptors(InterceptorRegistry var1);
/* 视图跳转控制器 */
void addViewControllers(ViewControllerRegistry registry);
/**
*静态资源处理
**/
void addResourceHandlers(ResourceHandlerRegistry registry);
/**
* 这里配置视图解析器
**/
void configureViewResolvers(ViewResolverRegistry registry);
/** 解决跨域问题 **/
public void addCorsMappings(CorsRegistry registry) ;
addInterceptors:インターセプター
まず、以下に示すようにインターセプタークラスを作成する必要があります
次に、以下に示すように、springmvc拡張クラスのaddInterceptorsメソッドにコードを記述する必要があります。
最後にテストフェーズです。
- addInterceptor:HandlerInterceptorインターフェースを実装するインターセプターインスタンスが必要です
- addPathPatterns:
addPathPatterns("/**")
インターセプターのフィルターパスルールを設定するために使用されます;すべてのリクエストをインターセプトします - excludePathPatterns:傍受する必要のないフィルタリングルールを設定するために使用されます
- インターセプターの主な目的:ユーザーのログインステータスをインターセプトする、ログをインターセプトするなど。
addResourceHandlers:静的リソース
springbootには4つのデフォルトの静的ディレクトリがあります:classpath:/ META-INF / resources /、classpath:/ resources /、classpath:/ static /、classpath:/ public
これらの4つの静的ディレクトリの外部に公開されているパスはすべて/ **です。つまり、これらの4つの静的ディレクトリ内のものにアクセスするときに、localhost:8080 /インターフェイスを直接使用できます。
これで、addResourceHandlersを使用して必要な静的ディレクトリをカスタマイズできます。このプロセスは、既存の4つの静的リソースディレクトリには影響しません。
具体的なコードは次のとおりです。
addViewControllers:ページジャンプ
ページジャンプとは、templatesフォルダー内のhtmlファイルに直接アクセスできないことを意味します。たとえば、templatesフォルダー内にlogin.htmlファイルがあります。
localhost:8080 / login.htmlは、このようにアクセスできません。このソリューションは、上記のaddResourceHandlersで静的リソースを指定することで解決できます。もちろん、たとえば、テンプレートディレクトリのlogin.htmlファイルにアクセスする場合は、コントローラーでも解決できます。コントローラでRequestMapping(path = "/ toLogin")メソッドを記述し、このメソッドが「login」を返すようにすることができます。これにより、コントローラを介して、つまりlocalhost:8080 /を介してテンプレートディレクトリのlogin.htmlファイルにアクセスできます。 toLoginインターフェイスアクセス。しかし、コントローラーコードを書くのは面倒です。次のように、addViewControllersメソッドで直接コードを書くことができます。
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/toLogin").setViewName("login");
}
これにより、上記のコントローラーを作成するのと同じ効果が得られます。また、localhost:8080 / toLoginインターフェイスを介してテンプレートのlogin.htmlファイルにアクセスすることもできます。
また、このメソッドは、コントローラーコントローラーパッケージに記述されているコントローラーには影響しません。
configureViewResolvers:ビューリゾルバー
注意が必要な詳細の1つは、springbootにthymeleafエンジンテンプレートがある場合、デフォルトのビューリゾルバーはprefix:classpath:/ templates /です。
接尾辞:.htmlであり、これが最も優先度が高く、他のビューパーサーがある限り、構成されていても役に立ちません。
addCorsMappings:クロスドメイン
クロスドメインの問題を解決するためにspringbootで構成されたファイルは次のとおりです
。allowedOriginsメソッドのパラメーターはspringboot自体のURLではなく、他のURLであることに注意してください。