この記事では、ソース コードを通じて静的リソース マッピング ルールを調べる方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
Spring Boot - ソース コードを通じて静的リソースのマッピング ルールを探索する
Spring Boot プロジェクトを開発するときは、次のような多くの静的リソースをインポートする必要があります。 css 、 js およびその他のファイルとして
#Web アプリケーションの場合、メインの下に Web アプリケーションが存在します。以前はすべてのページをそこにインポートしていました。しかし、現在の pom はどうなるのでしょうか。パッケージ化方法は jar なので、SpringBoot はこの方法でページを作成できるでしょうか?もちろん可能ですが、SpringBoot には静的リソースの場所に関する規制があります。
静的リソース マッピング ルール
最初のマッピング ルール
SpringBoot では、SpringMVC の Web 構成は WebMvcAutoConfiguration 構成クラス内にあります。
WebMvcAutoConfigurationAdapter には多くの設定メソッドがありますが、その 1 つはリソース処理メソッドの追加です: addResourceHandlers()、ソース コードは次のとおりです。
@Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { super.addResourceHandlers(registry); if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; } ServletContext servletContext = getServletContext(); addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/"); addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> { registration.addResourceLocations(this.resourceProperties.getStaticLocations()); if (servletContext != null) { registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION)); } }); }
WebJarsとは、クライアント(ブラウザ)のリソース(JavaScript、Cssなど)をjarパッケージファイルにパッケージ化し、リソースの依存関係を一元管理するものです。 WebJar の jar パッケージは、Maven 中央リポジトリにデプロイされます。
Webjars 公式 Web サイトにアクセスして必要なリソースを見つけ、Maven の依存関係をプロジェクトに追加してこれらのリソースを直接使用できます。
たとえば、jquery リソースをインポートしたいとします。
<dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.6.0</version></dependency>
インポート後、リソース パスを通じてリソースの保存場所を見つけてアクセスできます。 Webjars Web サイトにインポートするのはすべて以下に準拠しています。 以下の図の構造
# はパスを通じてアクセスされ、静的リソースに正常にアクセスされます。
#2 番目のマッピング ルール
ソース コードの分析を続けましょうgetStaticPathpattern(): 静的パス パターンを取得します。クリックしてソース コードを確認します
public String getStaticPathPattern() { return this.staticPathPattern; }
は、現在のディレクトリ内のすべての静的リソースを識別できることを意味しますが、現在のディレクトリとは正確には何を指すのでしょうか? resourceProperties のソース コードをクリックすると確認できます。ソース コードは次のとおりです。
上記のソース コードでは、4 つの静的リソース パスが明確に示されているため、これら 4 つのディレクトリ内の静的リソースが利用可能である限り、それらは直接入手できます。
それをテストしてみましょう。まず上記のディレクトリを完成させてから、js リソースをリソース ディレクトリに配置します。
Springboot アプリケーションのテストを開始します。静的リソースです!
#次の 4 つのディレクトリに保存されている静的リソースは、当社が識別できます:"classpath:/META-INF/resources/""classpath:/resources/""classpath:/static/""classpath:/public/"
構成ファイルを介して配置する必要があるフォルダーを指定できます。ファイルの場合、それらは application.properties で構成されます;
spring.resources.static-locations=classpath:/coding/,classpath:/cheng/
ただし、以下のソース コードから、リソース パスがカスタマイズされている場合、上記の 4 つのデフォルト パスは無効になることがわかります。パスをカスタマイズするには、springboot を使用して自動的にパスを構成します。
if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; }
以上がソースコードを通じて静的リソースのマッピングルールを調べる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。