Spring Boot静的リソースファイルの読み込み方法


一、需要シーン
プロジェクトでは、都市情報ファイルのcountries.xmlなどの静的リソースファイルを使用する必要があります。プロジェクトの起動後、データを読み込み、データベースに初期化します。
実現する
静的資源ファイルcountries.xmlはsrc/main/resourceディレクトリの下にあります。
SpringのClass PathResourceを使用して実現される:

Resource resource = new ClassPathResource("countries.xml");
File file = resource.getFile();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
Class PathResource類のコメントは以下の通りです。
Resource implemention for class path resoures.Uses either a given Class Loader or a given Class for loading resoures.
Supports resolution as java.io.File if the class path resource redes in the file system,but not for resoures in a JAR.Always supports resolution URL.
翻訳してみると、
クラスパスリソースのリソース実装。与えられたクラスLoaderまたは与えられたクラスを使用してリソースをロードします。
クラスパスのリソースがファイルシステムに存在する場合、JARのリソースであれば、Java.io.Fileとして解析されます。常に解析をURLにサポートします。
三、Jar中の資源ファイル
上にも述べましたが、もし静的リソースファイルがファイルシステムにあれば、Java.io.Fileとして解析され、プログラムは正常に動作します。
プロジェクトをJarパッケージにしてサーバーで実行したら、リソースが見つからないエラーが発生しました。
解決法は、java.io.Fileオブジェクトを取得せずに、直接入力ストリームを取得することです。

Resource resource = new ClassPathResource("countries.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));
説明:resourceオブジェクトを構築した後、直接にその入力ストリームを取得します。
四、付録
  • Spring Boot access static resource missing scr/main/resource
  • Class path resource not found when running as jar
  • 以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。