Spring Bootのプロジェクト構成をやさしく理解しよう
新人
「Spring BootのプロジェクトをPleiadesで作ったんですが、どのファイルが何をしているのかよくわかりません……」
先輩
「それはとても大事なことに気づいたね。Spring Bootのプロジェクト構成を理解しておくと、あとあとエラーが出ても対処しやすくなるよ。」
新人
「フォルダやファイルがたくさんあって混乱してます。何から覚えればいいですか?」
先輩
「まずは、PleiadesでSpring Bootのプロジェクトを作成したときに、自動で作られるフォルダとファイルの構成から見ていこうか。」
1. Spring Bootのプロジェクト構成とは?
Spring Bootのプロジェクト構成は、アプリケーションを効率的に開発・管理できるように設計されています。特にPleiadesを使って作成したSpring Bootプロジェクトでは、Gradleを利用する構成が基本です。
プロジェクトを作成すると、以下のような構成になります。
project-root/
├── .gradle/
├── build/
├── gradle/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/demo/
│ │ │ └── DemoApplication.java
│ │ └── resources/
│ │ ├── static/
│ │ ├── templates/
│ │ └── application.properties
│ └── test/
│ └── java/
├── build.gradle
└── settings.gradle
この構成の中で最も重要なのは、src/main/javaとsrc/main/resourcesです。JavaのソースコードやHTMLテンプレート、プロパティファイルなど、アプリの核となる部分がこの中に配置されます。
Spring Boot プロジェクト構成を理解することで、エラーが起きたときの原因特定や、機能追加の際のファイル分離がやりやすくなります。
2. Pleiadesで作成される基本フォルダとファイルの意味
それでは、PleiadesでSpring Bootプロジェクトを作成したときにできるフォルダやファイルの意味を、初心者にもわかりやすく説明します。
src/main/java:ここにはJavaのソースコードを置きます。コントローラやサービス、リポジトリなど、アプリのロジックを書く場所です。
src/main/resources:アプリの設定ファイル(例:application.properties)や、HTMLファイル(templates内)などを置きます。
static:CSSや画像などの静的ファイルを配置します。templatesはHTMLテンプレートを置く場所で、Thymeleafなどと組み合わせて使います。
build.gradle:このファイルでは、依存関係やビルド設定を記述します。PleiadesではGUIでSpring Webなどの依存関係を追加できますが、build.gradleを手動で編集することも可能です。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
.gradleやbuildフォルダは、Gradleのビルド処理で使われる内部的なものなので、基本的には中身を直接触ることはありません。
settings.gradleは、プロジェクト名やマルチプロジェクト構成のときの設定に使います。初心者のうちはあまり触れる必要はありません。
Pleiades Spring プロジェクトの構成は最初は難しく見えますが、よく使う場所だけ覚えておけば大丈夫です。
3. src/main/java配下の構成と役割
src/main/javaフォルダの中には、主にアプリケーションのロジックとなるJavaクラスを配置します。この配下の構成をきちんと整理しておくことで、コードが読みやすくなり、保守もしやすくなります。
Spring Boot プロジェクト構成では、次のようなパッケージ分けが一般的です。
src/main/java/com/example/demo/
├── controller/
│ └── HomeController.java
├── service/
│ └── HomeService.java
└── repository/
└── HomeRepository.java
controller:リクエストを受け取るクラスを置きます。Springでは@Controllerを使ってルーティング処理を行います。
service:ビジネスロジックを記述します。コントローラとリポジトリの間をつなぐ役割を持ちます。
repository:データベース操作を行うクラスを置きます。@Repositoryアノテーションをつけて、データアクセスの管理を行います。
このようにフォルダを分けて整理しておくことで、ファイルが増えてきたときにも迷わずに必要な場所にアクセスできるようになります。
4. src/main/resources配下の構成と役割
src/main/resourcesは、Java以外の設定ファイルやテンプレートファイルを格納する場所です。
特にSpring Bootでは、application.propertiesという設定ファイルが重要です。アプリ全体の挙動やポート番号、DB接続情報などを設定できます。
src/main/resources/
├── static/
├── templates/
└── application.properties
staticフォルダには、CSSや画像ファイルなどの静的リソースを置きます。たとえば、Webページで使うロゴ画像やスタイルシートなどがここに入ります。
templatesには、HTMLファイルを配置します。Spring BootではThymeleafなどのテンプレートエンジンと連携して、画面表示用のHTMLをここで管理します。
application.propertiesは、アプリの設定ファイルです。次のように書くことで、ポート番号などを変更できます。
server.port=8081
spring.application.name=demoApp
Spring Boot フォルダ構成を理解するうえで、このresourcesフォルダの役割もとても重要です。
5. Gradleファイル(build.gradle)の役割とよく使う設定
build.gradleファイルは、Gradleを使ってSpring Bootアプリを構築・実行・テストするための中心的な設定ファイルです。PleiadesではGUIで依存関係を追加することもできますが、build.gradleを直接編集することで、より柔軟な設定が可能になります。
基本的な構成は次のようになっています。
plugins {
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.0'
id 'java'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
pluginsでは、Spring Bootを使うために必要なプラグインを指定します。
dependenciesでは、Spring WebやThymeleafなどのライブラリを追加します。Pleiades上でGUIで依存関係を追加した場合も、この箇所が自動で更新されます。
Gradle build.gradle 設定を理解しておくことで、ライブラリ追加やビルド設定を柔軟に調整できます。
初心者のうちはdependenciesだけを意識しておけば十分ですが、アプリが複雑になるにつれて、より高度な設定を行う必要が出てきます。
6. 実際にコントローラを配置する場所と記述例
Spring Boot コントローラ配置は、初心者が最初に迷いやすいポイントの一つです。基本的にはsrc/main/java配下のcontrollerパッケージに作成します。
たとえば、次のようなフォルダ構成にすると、アプリの責務が明確になります。
src/main/java/com/example/demo/
├── DemoApplication.java
└── controller/
└── HelloController.java
このように整理された構成にすることで、ファイルが増えても探しやすくなります。
次に、実際の@Controllerを使ったJavaクラスの例を見てみましょう。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "こんにちは、Spring Boot!");
return "hello";
}
}
この例では、/helloというパスでアクセスされたときに、templatesフォルダ内のhello.htmlを表示するという処理になっています。Modelにデータを追加して、HTML側に表示する形です。
@Controllerは画面表示を行うコントローラに使われ、returnで返す文字列はテンプレートファイル名になります。@RestControllerと違ってJSONを返さない点に注意しましょう。
7. Pleiadesでプロジェクトを拡張するときのおすすめ構成
PleiadesでSpring Bootプロジェクトを拡張していくとき、最初に意識しておくと良いのが「役割ごとのパッケージ分け」です。
例えば、次のような構成がとてもおすすめです。
src/main/java/com/example/demo/
├── controller/
├── service/
├── repository/
├── entity/
└── config/
entityパッケージには、データベースと対応するJavaクラス(エンティティ)を入れます。@Entityを使って、テーブルと連携するクラスです。
configパッケージには、アプリ全体の設定クラスを入れます。たとえば、セキュリティやバリデーションのカスタマイズ設定などを行うときに使います。
また、機能ごとにパッケージを分けたい場合は、「機能単位」で以下のようにまとめる方法もあります。
src/main/java/com/example/demo/feature/
└── user/
├── UserController.java
├── UserService.java
├── UserRepository.java
└── User.java
このようにしておくと、ユーザー機能に関するすべてのクラスがuserパッケージ内にまとまり、より管理しやすくなります。
初心者のうちはcontroller、service、repository、entityの4つを使う構成から始めるとよいでしょう。
8. プロジェクト構成に慣れるための学習方法と練習のポイント
プロジェクト構成 練習方法としては、小さな機能を1つずつ作ってみるのが最も効果的です。例えば、「/hello」にアクセスすると「こんにちは」と表示するだけのアプリを作ってみましょう。
慣れてきたら、次に「複数画面の表示」「サービスクラスの追加」「データベース連携」など、少しずつ機能を広げてみてください。
練習のときに気をつけたいポイントは次の3つです。
- フォルダ構成を整理してから開発する
- クラスに正しいアノテーション(@Controllerなど)をつける
- application.propertiesで必要な設定をきちんと行う
また、他の人が作ったSpring Boot プロジェクト構成を見てみるのも非常に勉強になります。GitHubで「spring boot sample project」などで検索して、実際のコードを読むのもおすすめです。
Spring Bootは非常に多機能で、最初は戸惑うこともあるかもしれませんが、構成に慣れてしまえば開発がスムーズになります。まずは基本的なパッケージ分けと@Controllerの使い方から確実に押さえていきましょう。