Springプロジェクトの全体構成を見てみよう!初心者向けにわかりやすく解説
新人
「先輩、SpringプロジェクトをPleiadesとGradleで作ったんですけど、フォルダやファイルがたくさんあってよくわからないです。」
先輩
「そうだね、Springプロジェクトは大きな仕組みで動いてるから、最初は戸惑うよね。でも、大切なフォルダやファイルの役割を知れば安心だよ!」
新人
「どんな仕組みになっているのか、詳しく教えてください!」
先輩
「じゃあ、Springプロジェクトの全体構成と役割を順番に見ていこう。」
1. Springプロジェクトの全体構成とは?
Springプロジェクトは、Pleiadesで作成すると自動的にいくつかのフォルダとファイルが生成されます。Gradleを使っているので、build.gradleファイルが中心になり、プロジェクトの依存関係などを管理しています。Springの仕組みでは、「アプリケーションの実行に必要な部分」や「画面を表示する部分」などが役割ごとに分かれていて、それぞれが連携しています。
Springでは、@Controllerアノテーションを使ってWebアプリケーションの画面制御を行います。@Controllerを使う場合は、src/main/java配下にコントローラのクラスを作成して、必要な処理をまとめていきます。
さらに、src/main/resourcesフォルダに画面を表示するテンプレートファイル(HTML)や設定ファイルを置きます。設定ファイルは、アプリケーション全体の動きを制御する大事な役割があります。
プロジェクト構成を理解すると、Springアプリケーションの仕組みが見えてきて、開発をスムーズに進められるようになります。
2. プロジェクト内の重要なフォルダ・ファイルの役割
ここでは、Pleiades+Gradleで作成したSpringプロジェクトのフォルダとファイルの主な役割を詳しく見ていきます。
src/main/java
このフォルダには、アプリケーションのメイン処理を行うJavaクラスを置きます。@Controllerクラスや、サービスクラスなどの処理を記述します。@Controllerクラスは、ユーザーのリクエストを受け取り、どのHTMLを表示するか制御する部分です。
src/main/resources
リソースファイルを置く場所です。画面を作るHTMLファイル(テンプレート)やアプリケーション設定ファイル(application.propertiesやapplication.ymlなど)があります。画面を表示するテンプレートは、templatesフォルダに入れます。
build.gradle
Gradleのビルド設定ファイルです。必要なライブラリを指定する依存関係(dependencies)などを管理します。例えば、Spring BootやThymeleafを使うために、ここに必要な設定を追記します。
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'
}
src/test/java
テスト用のJavaクラスを置きます。Spring Bootアプリケーションでは、単体テストや結合テストなどを行うときにここを使います。最初のうちは、まだテストを作らなくても問題ありません。
templates
src/main/resourcesの中にあるtemplatesフォルダです。ここには、@Controllerクラスから表示を指定されたHTMLファイルを置きます。Spring Bootでは、Thymeleafテンプレートエンジンを使うことが多いです。
static
同じくsrc/main/resourcesの中にあるstaticフォルダは、CSSファイルや画像などの静的リソースを置きます。ここに置いたファイルは、そのままブラウザに配信されます。
application.properties
アプリケーションの設定を記述する大事なファイルです。例えば、ポート番号やデータベース接続情報などを設定します。設定の例を見てみましょう。
server.port=8080
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
このように、ポート番号やテンプレートのパスなどを決めることができます。
実際のプロジェクト例
実際のPleiadesで作成されたSpringプロジェクトのフォルダ構成は下記のようになります。
src
└── main
├── java
│ └── com.example.demo
│ ├── DemoApplication.java
│ └── controller
│ └── HomeController.java
├── resources
│ ├── static
│ │ ├── css
│ │ └── images
│ ├── templates
│ │ └── index.html
│ └── application.properties
└── test
└── java
└── com.example.demo
└── DemoApplicationTests.java
build.gradle
このように、PleiadesでGradleを使うと基本的な構成がすでに作られています。初心者の方は、どのファイルがどんな役割を持っているかを意識しながらコードを書いていくと理解が深まります。
特に、@Controllerクラスやtemplatesフォルダの役割をしっかり覚えておくと、Webアプリケーションの開発がスムーズに進みます。
3. build.gradleファイルの役割とポイント
Springプロジェクトの開発で、build.gradleファイルはとても重要な役割を持っています。PleiadesでGradleを選んでプロジェクトを作成すると、このファイルは自動的に作成されます。主に、どのライブラリを使うか、どのプラグインを使うかなどを設定します。
例えば、Spring Bootを使う場合はspring-boot-starter-webやspring-boot-starter-thymeleafといった依存関係をここに書きます。@ControllerでHTMLを返す仕組みを作るときは、Thymeleafテンプレートエンジンが必要なので、spring-boot-starter-thymeleafを忘れずに書きましょう。
また、プロジェクトのバージョンやJavaのバージョンも設定できます。設定の例を見てみましょう。
plugins {
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.0'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
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'
}
このように、Springアプリケーションに必要なライブラリを管理する仕組みがbuild.gradleです。初心者の方は、最初は内容をすべて理解するのは大変かもしれませんが、dependenciesに必要なものを書き足していくことで、開発に必要な機能が追加されていきます。
プロジェクトを実行するとき、Gradleが自動的に必要なライブラリをダウンロードしてくれるので、便利さを感じられるはずです。@Controllerで作るWebアプリケーションの表示処理も、このファイルで必要な設定がされているからこそ、正しく動くのです。
4. src/main/javaのパッケージ構成とおすすめの構成例
Springプロジェクトでは、src/main/javaフォルダがアプリケーションの中核部分です。ここには、実際に動くプログラムをまとめますが、クラスを整理するためにパッケージをうまく使うのがポイントです。
例えば、com.example.demoの下に、controllerやservice、modelなどのパッケージを作っておくと見通しが良くなります。
コントローラのクラスはcontrollerパッケージに、ビジネスロジックをまとめるサービスクラスはserviceパッケージに、データを扱うクラス(エンティティなど)はmodelパッケージに入れるのがおすすめです。
例えば、HomeController.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 HomeController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("message", "Springアプリケーションへようこそ!");
return "index";
}
}
このように、パッケージをわかりやすく分けると、どこに何があるのかすぐに見つけやすくなります。初心者の方は、最初からしっかりパッケージを整理しておくと、あとでプロジェクトが大きくなったときにも対応しやすいです。
特に、@Controllerを使うクラスは必ずcontrollerパッケージにまとめると、ほかのクラスと役割が混ざらず、すっきりした構成になります。
5. src/main/resourcesの役割とリソース管理のポイント
Springプロジェクトでは、src/main/resourcesフォルダがとても大切です。ここはアプリケーションが使う「リソースファイル」を置く場所で、HTMLテンプレートや設定ファイル、静的リソース(CSSや画像)などを管理します。
まず、templatesフォルダには、Thymeleafを使ったHTMLファイルを置きます。@Controllerで処理した結果を、このHTMLファイルに表示させます。例えば、index.htmlを作るときは下記のようにします。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>ホーム画面</title>
</head>
<body>
<h1 th:text="${message}">メッセージがここに表示されます</h1>
</body>
</html>
このindex.htmlをsrc/main/resources/templatesに置けば、@Controllerクラスでreturn "index";と書くことで、この画面がブラウザに表示されます。
また、staticフォルダには、CSSファイルや画像などを置きます。ここに置いたファイルは、Spring Bootが自動的に公開してくれます。例えば、style.cssをstatic/cssに置くと、ブラウザでは/css/style.cssとして読み込めるようになります。
設定ファイルであるapplication.propertiesもsrc/main/resourcesに置かれます。アプリケーション全体の動きを決める大事なファイルなので、間違いがないように管理することが大切です。
初心者の方は、まずtemplatesとstaticの役割をしっかり覚えておくと、画面表示とスタイルの管理がスムーズに進みます。さらに、application.propertiesの書き方を少しずつ覚えることで、自分のアプリケーションを自由にカスタマイズできるようになります。
Springアプリケーションの開発では、@Controllerで画面表示を制御するときにsrc/main/resourcesの中身をうまく使うことが大切です。PleiadesとGradleの環境なら、最初から必要な仕組みが用意されているので、安心して開発に取り組んでください。
6. staticフォルダとtemplatesフォルダの役割
Springプロジェクトでは、src/main/resourcesの中にstaticフォルダとtemplatesフォルダがあります。これらは、Webアプリケーションの画面や見た目を作るときに重要な役割を持っています。
まず、staticフォルダには、CSSやJavaScript、画像ファイルなどの静的リソースを置きます。これらのファイルは、ブラウザが直接アクセスできる仕組みになっていて、URLでそのまま読み込めます。例えば、style.cssをstatic/cssに置くと、ブラウザでは/css/style.cssとしてアクセスできます。
次に、templatesフォルダは、Thymeleafで使うHTMLファイルを置く場所です。@Controllerクラスでリクエストを受け取った後、どのHTMLを表示するか指定するときに使います。例えば、下記のようにHomeController.javaでreturn "index";と書けば、templates/index.htmlが表示されます。
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "index";
}
}
この仕組みのおかげで、画面のデザインとコントローラの処理を分けて管理できるので、開発がしやすくなります。初心者の方は、まずstaticとtemplatesの違いを覚えておきましょう。
7. application.propertiesファイルの役割と活用ポイント
Springアプリケーションでは、application.propertiesファイルがとても大事です。このファイルは、アプリケーションの動きを設定するために使われます。例えば、ポート番号やテンプレートの場所など、さまざまな項目を簡単に変更できます。
下記のように、server.port=8080と書くと、アプリケーションが8080番ポートで起動します。
server.port=8080
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
また、Thymeleafの設定で、HTMLファイルの場所をspring.thymeleaf.prefixで指定できます。このように、設定ファイルを使うことで、プログラムを書き換えなくてもアプリケーションの動きを変えられるのがポイントです。
初心者の方は、まずserver.portやspring.thymeleaf.prefixなど、よく使う項目を覚えておくと良いでしょう。特に、@Controllerで画面を表示するときは、HTMLファイルのパス設定が間違っていると画面が表示されないことがあります。application.propertiesを正しく設定することで、エラーを防ぐことができます。
さらに、アプリケーションが大きくなってきたら、データベース接続の設定などもここに書けるようになります。例えば、下記のようにデータベース接続情報を追加することができます。
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=pass
このように、application.propertiesを活用すると、アプリケーションのカスタマイズがぐっと楽になります。最初は覚えることが多いかもしれませんが、少しずつ試していくと自然に使いこなせるようになります。
8. Springプロジェクト全体の流れを理解するための学習ステップ
ここまでで、Springプロジェクトの全体構成や各フォルダの役割を見てきました。最後に、初心者の方がこの流れを理解しながら学習を進めるためのステップを紹介します。
まずは、@Controllerクラスの仕組みをしっかり理解しましょう。@Controllerは、リクエストを受け取ってHTMLを表示する役割があります。基本的なクラスの書き方を繰り返し練習すると、自信がついてきます。
次に、templatesに置くHTMLファイルを作る練習をしましょう。実際にth:textを使って画面にメッセージを表示してみると、動きが分かりやすいです。さらに、staticフォルダを使って、CSSや画像を表示してみましょう。見た目を整えることで、アプリケーションを作る楽しさが増します。
そして、application.propertiesの設定を少しずつ覚えていきましょう。最初はserver.portなど簡単な設定から始めると良いです。設定を変えてアプリケーションの動きが変わることを実感すると、もっと学びたくなります。
さらに、PleiadesとGradleの操作に慣れるのも大切です。Pleiadesの画面でプロジェクトをビルドして、エラーが出ないか確認する習慣をつけると、開発のスピードが上がります。Gradleのビルドファイルも、依存関係を管理する大切なファイルなので、書き方に少しずつ慣れていきましょう。
Springプロジェクトの全体構成をしっかり理解すると、どの部分を編集すればいいか迷わなくなります。@Controller、HTMLテンプレート、staticフォルダ、application.propertiesなど、それぞれの役割を少しずつ実践していくのがポイントです。
初心者の方は焦らずに、ひとつひとつの役割を確認しながら学習を進めてください。PleiadesとGradleの環境があれば、すぐに試せるので、ぜひ手を動かして理解を深めましょう。