WebMvcConfigrationSupportを継承した後、自動設定が有効ではなく、どのようにスクリーンショットを配置しますか?
2286 ワード
オンラインでは、spring book t 2.0以降、springプロファイルを構築する際に、WebMvcConfigrerを直接実現することや、WebMvcConfigrationSupportを直接継承することが推奨されていますが、WebMvcConfigfigurをテストしても大丈夫です。
一、WebMvcConfigrationSupport類を継承するのは自動配置が無効になる原因です。
spring bootのカスタムプロファイルがWebMvcConfigrationSupportを継承した後、自動的に配置された静的リソースパスが有効でないことが分かりました。
まず、自動配置クラスの定義を見てみます。
これはスプリングブックのweb自動配置類WebMvcAutoConfigrationに条件があるからです。
自動配置を使用して有効にしたいならば、また自分の必要に応じていくつかの方法を書き換えます。例えば、view Controllerを追加すると、自分の配置類はWebMvcConfigrer Adapterの種類を継承することができます。しかし、spring 5.0バージョンの後、このクラスはWebMvcConfigrer Adapterに捨てられました。まだ使えますが、うまく見えません。
これはクラスの注釈です。spring 5.0の後にJava 8を使うという意味ですが、Java 8のインターフェースにはdefault方法がありますので、このクラスは必要ありません。したがって、私たちは直接にカスタマイズした設定クラスで実現する必要があります。
二、WebMvcConfigrationSupport類を継承して、スクリーンの配置はどうなりますか?
一、WebMvcConfigrationSupport類を継承するのは自動配置が無効になる原因です。
spring bootのカスタムプロファイルがWebMvcConfigrationSupportを継承した後、自動的に配置された静的リソースパスが有効でないことが分かりました。
まず、自動配置クラスの定義を見てみます。
これはスプリングブックのweb自動配置類WebMvcAutoConfigrationに条件があるからです。
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
この注釈の意味はプロジェクト類のルートにWebMvcConfigrationSupportタイプのbeanが欠けている時に自動配置類を変更すると有効になりますので、WebMvcConfigrationSupportを継承した後、自分で相応の方法を書き直す必要があります。自動配置を使用して有効にしたいならば、また自分の必要に応じていくつかの方法を書き換えます。例えば、view Controllerを追加すると、自分の配置類はWebMvcConfigrer Adapterの種類を継承することができます。しかし、spring 5.0バージョンの後、このクラスはWebMvcConfigrer Adapterに捨てられました。まだ使えますが、うまく見えません。
これはクラスの注釈です。spring 5.0の後にJava 8を使うという意味ですが、Java 8のインターフェースにはdefault方法がありますので、このクラスは必要ありません。したがって、私たちは直接にカスタマイズした設定クラスで実現する必要があります。
二、WebMvcConfigrationSupport類を継承して、スクリーンの配置はどうなりますか?
@Configuration
public class MyConfigurer extends WebMvcConfigurationSupport {
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**");
super.addInterceptors(registry);
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
super.addResourceHandlers(registry);
}
}
このコードに注意してください。
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
WebMvcConfigrationSupportを継承すると自動的に構成が無効になりますので、ここではデフォルトの静的リソースの位置を指定します。同時に書き上げられないように注意します。
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。