resourcesフォルダに置くべきファイルとは?Spring Boot初心者向けに完全解説
新人
「先輩、Spring Bootのプロジェクトでresourcesフォルダって何のためにあるんですか?」
先輩
「いい質問だね。resourcesフォルダは、Javaコードとは別にアプリケーションに必要な設定ファイルやHTML、CSSなどの静的リソースを配置するための特別な場所なんだ。」
新人
「へぇ〜、具体的にはどんなファイルを置くんですか?」
先輩
「それじゃあ、resourcesフォルダに置くべきファイルについて詳しく説明していこうか。」
1. resourcesフォルダとは何か?
resourcesフォルダの基本的な役割
Spring Bootのプロジェクトでは、Javaのコードとは別に、アプリケーションの設定ファイルやテンプレート、静的ファイルなどを配置する専用の場所としてsrc/main/resourcesフォルダが用意されています。
このresourcesフォルダに配置されたファイルは、Gradleのビルド時に自動的にコンパイル対象に含まれ、classpathに配置されるため、Springアプリケーションから簡単に読み込むことができます。
特に、application.propertiesやstatic、templatesといったディレクトリをこの中に作成することで、Spring Bootの自動設定機能が正しく働くようになります。
Pleiades + Gradle環境でも共通
この仕組みは、MavenでもGradleでも共通しており、Pleiadesを使ってGradleプロジェクトを作成した場合でも、resourcesフォルダは必須の構成要素となります。
2. resourcesフォルダに配置されるファイルの種類と目的
構成例を見てみよう
src/
└── main/
└── resources/
├── application.properties
├── static/
│ ├── css/
│ │ └── style.css
│ └── images/
│ └── logo.png
├── templates/
│ └── home.html
└── messages.properties
設定ファイル:application.properties / application.yml
application.propertiesやapplication.ymlは、Spring Bootのアプリケーション全体の動作を制御する設定ファイルです。データベースの接続設定やサーバーポートの変更などを行う場合に使います。
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=password
静的リソース:staticディレクトリ
staticフォルダには、HTML、CSS、JavaScript、画像ファイルなど、Webブラウザに直接送信される静的なリソースを配置します。URLに直接アクセスできるのが特徴です。
<img src="/images/logo.png" alt="ロゴ画像">
<link rel="stylesheet" href="/css/style.css">
テンプレート:templatesディレクトリ
templatesフォルダには、Thymeleafなどのテンプレートエンジンで使用されるHTMLファイルを配置します。これらのテンプレートは、@Controllerを通して動的に生成されたデータとともにブラウザに送信されます。
国際化リソース:messages.properties
Springでは、画面に表示されるメッセージを外部ファイルにまとめることで、多言語対応を簡単に実現できます。このようなメッセージを記述するファイルがmessages.propertiesです。
greeting=こんにちは
farewell=さようなら
設定XMLやデータファイルも配置できる
Springの設定ファイルやXMLベースの定義ファイル、CSVやJSONなどのデータファイルもこのresourcesフォルダに配置することで、クラスパスから読み込むことができます。
resourcesフォルダに置かれたファイルの読み込み方法
Javaコードからresourcesフォルダにあるファイルを読み込む場合は、ClassPathResourceやResourceLoaderなどを使ってアクセスします。
Resource resource = new ClassPathResource("sample-data.json");
InputStream inputStream = resource.getInputStream();
このように、resourcesフォルダはclasspathの一部として扱われ、アプリケーションから簡単に参照できます。
3. application.properties / application.ymlの使い分けと配置場所
どちらも使えるが、形式が違う
Spring Bootでは、設定ファイルとしてapplication.propertiesとapplication.ymlのどちらも使えますが、それぞれの形式に違いがあります。
application.propertiesは「キー=値」形式で書くのに対して、application.ymlはインデントを使ってネスト構造を表現できます。
どちらを使うべきか
初心者にはapplication.propertiesのほうがシンプルで理解しやすくおすすめです。構成が複雑になってくると、application.ymlの方が見やすく管理しやすくなるため、中級者以上に適しています。
配置場所は必ずsrc/main/resources
どちらの形式でも、必ずsrc/main/resourcesフォルダの直下に配置する必要があります。これにより、Spring Bootの自動構成が設定ファイルを正しく読み取ることができます。
設定ファイルの配置例
src/
└── main/
└── resources/
└── application.properties
このようにresources直下に置くことが、Spring Bootのルールです。「application.properties 配置場所」で検索する人も多いので、正確な位置を理解しておくことが大切です。
4. staticやtemplatesとの違い(役割ごとの分離)
staticとtemplatesの違いとは?
staticフォルダとtemplatesフォルダは、どちらもresourcesフォルダの中にありますが、使い方と目的がまったく異なります。
- static:HTML、CSS、画像など、ブラウザから直接アクセスされるファイル
- templates:Springの
@Controller経由で処理されるテンプレートファイル(Thymeleafなど)
たとえば、static/css/style.cssはhttp://localhost:8080/css/style.cssのように直接アクセスできます。一方、templates/home.htmlは@Controllerで指定されたビュー名により表示されます。
動的か静的かで分かれる
staticは動的処理が不要なリソース、templatesはSpringでデータを渡して表示したい場合に使います。
src/
└── main/
└── resources/
├── static/
│ ├── css/
│ │ └── style.css
│ └── images/
│ └── logo.png
└── templates/
└── home.html
Spring Boot static templates 違いは、初心者にとって混乱しやすいポイントなので、構成や用途の違いをしっかり理解しておくことが重要です。
5. resourcesフォルダ内でのサブディレクトリの使い方
自由にサブディレクトリを作成可能
resourcesフォルダの中では、必要に応じて自由にサブディレクトリを作成できます。たとえば、jsonやxml、configといった目的別にフォルダを分けることで、管理しやすくなります。
サブディレクトリの例
src/
└── main/
└── resources/
├── config/
│ └── mail-config.xml
├── data/
│ └── sample.json
└── messages.properties
このように整理しておくと、大規模なプロジェクトでもファイルの役割がすぐに分かるようになります。
読み込み時の注意点
Javaコードからサブディレクトリ内のファイルを読み込む場合は、パスを正確に指定する必要があります。
Resource resource = new ClassPathResource("data/sample.json");
InputStream inputStream = resource.getInputStream();
resourcesフォルダ内の階層構造を意識して、読み込み時のパスを設計することが大切です。
慣れたら構成を最適化しよう
初心者のうちはstaticとtemplatesだけでも十分ですが、慣れてきたらconfigやassetsといったカスタムディレクトリを追加して、整理された構成にすることでメンテナンス性が向上します。
6. 外部設定ファイルやバンドルされたファイルの扱い方(メッセージ・バリデーションなど)
外部化されたメッセージファイルの活用
resourcesフォルダ内には、アプリケーションの国際化対応のために使用されるmessages.propertiesファイルを配置できます。
これはバリデーションエラーメッセージやラベル文言を外部化して、画面とロジックの分離を実現するものです。
バリデーション用メッセージの例
NotBlank.userForm.name=名前を入力してください
Size.userForm.name=名前は20文字以内で入力してください
こういったファイルは、Springのバリデーション処理やフォームのエラーメッセージに自然に連携されます。これにより、Javaコードを変更せずにメッセージだけを変更できます。
日本語ファイル名の注意点
messages_ja.propertiesのように、言語別のファイルを分けることで、多言語対応も可能になります。
src/
└── main/
└── resources/
├── messages.properties
└── messages_ja.properties
resources フォルダ 使い方のひとつとして、こうしたファイルの配置は非常に基本的かつ重要です。
7. Gradleでresources配下のファイルがビルドされる仕組み
Gradleはresourcesフォルダを自動で含める
Spring BootのGradleプロジェクトでは、src/main/resources内のファイルはビルド時に自動的にクラスパスに含まれるよう設定されています。
そのため、build.gradleに特別な設定を追加しなくても、application.propertiesやテンプレートなどが自動的にビルド対象になります。
ビルド後の出力先
build/
└── classes/
└── java/
└── main/
└── application.properties
このように、Gradleではresourcesの中身をJavaクラスと同じように扱い、最終的な実行パッケージ(JAR)にバンドルします。
ファイルが含まれていないときの確認ポイント
まれにファイルがJARに含まれていない場合は、ファイルの拡張子やパスにミスがないか確認し、Gradleのクリーンビルドを試すと解決することがあります。
8. 初心者におすすめのresourcesフォルダ運用ルール
命名ルールを統一する
application.propertiesやmessages.propertiesなどのファイル名は、複数人で開発する場合に混乱が起きないように、名前のルールを決めておくのがおすすめです。
たとえば、messages.propertiesでは機能ごとにファイルを分けることもできます。
src/
└── main/
└── resources/
├── messages/
│ ├── user.properties
│ └── product.properties
└── application.properties
コメントやサンプルを含めておく
設定ファイルやメッセージファイルには、初めて触る人のためにコメントを入れておくと、運用ルールが共有しやすくなります。
# サーバーポートの設定
server.port=8080
使用しないファイルは削除する
resourcesフォルダ内に古い設定ファイルや不要なデータが残っていると、誤って読み込まれることがあります。使わないファイルはビルド前に削除しておきましょう。
構成のテンプレートを用意しておく
プロジェクトを新規作成するときのために、resourcesフォルダの構成テンプレートを用意しておくと、スムーズに開発を始められます。
src/
└── main/
└── resources/
├── application.properties
├── static/
│ └── css/
├── templates/
│ └── layout.html
├── messages/
│ └── common.properties
└── data/
└── init.json
Spring Boot 設定ファイル 配置場所や、resources フォルダ 使い方で検索する初心者にも、このようなルールがあると安心して学習できます。