2. Springプロジェクト作成

プロジェクト作成前に

Spring Boot Extension Pack

「Spring Boot Extension Pack」はSpring Bootでの開発に役立つ機能やツールのセットです。

「Spring Boot Extension Pack」をインストールすると、以下のプラグインが一括でまとまってインストールされます。

  • Spring Initializr Java Support
  • Spring Boot Dashboard
  • Spring Boot Tools

Spring Initializr Java Support

「Spring Initializr Java Support」はSpringプロジェクト作成のためのプラグインです。アプリケーションを開始するための初期セットアップができます。

Spring Boot Dashboard

「Spring Boot Dashboard」はSpringプロジェクトを簡単に管理し、実行、デバッグするプラグインです。

Spring Boot Tools

「Spring Boot Tools」はSpringプロジェクトのテンプレート作成、自動補完とコード生成、デバッグ、サーバー自動再起動など、さまざまな機能を支援するためのツールです。

「Spring Boot Extension Pack」インストール

VSCodeで「spring」で検索してインストールします。

ビルドツールとアーカイブ

ビルドとは

ビルドとはソースコードから実行可能なアプリケーションを生成するプロセスで、Javaではコンパイル、パッケージング、テスト、デプロイなどが含まれます。

Javaビルドツール

Javaのビルドツールは、Javaプロジェクトのコンパイル、テスト、パッケージングなどのビルドプロセスを自動化するためのツールです。開発者が複雑なビルド手順を手動で実行する必要なく、効率化なビルドができます。

大規模プロジェクトでは必須のツール

ビルドツールは大規模プロジェクトでは必須のツールです。グループで同時開発する場合、ビルド自動化や依存関係の管理を行うことで、品質向上や生産効率をあげます。

ビルド定義ファイル

ビルドツールは、ビルドプロセス定義するためのビルドファイルが必要です。ビルドの自動化や依存関係の管理、テストの実行、デプロイの処理などを行うことができます。

ビルドツールの種類

JavaのビルドツールにはApache MavenGradleAntなどがあります。MavenはJavaアプリケーションの一般的なビルドツールで、初心者にとっては扱いやすい傾向にあります。Gradleはカスタマイズ性が高く、高度なビルド機能を必要とする場合に適しています。

Maven Gradle
ファイルフォーマット XML Groovy、Kotlin
ビルド速度
柔軟性 自由度が高く、カスタマイズ性が高い Mavenは、設定の柔軟性が低い
プラグインの多さ
学習コスト

Spring Bootのビルドツールは、MavenとGradleがよく利用されます。

dependencies(依存関係)

dependenciesとは

dependencies(依存関係)は、プロジェクトが外部コンポーネントやライブラリを利用したいときに、そのコンポーネントやライブラリの設定項目です。

Maven
	<dependencies>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.30</version>
		</dependency>

	</dependencies>
Gradle
dependencies {
    implementation 'mysql:mysql-connector-java:8.0.30'
}

自動ビルド

MavenGradleを使用する場合、ビルド設定ファイルのdependenciesセクションに依存するライブラリの情報を記述します。そして、ビルドツールで必要なライブラリを自動ダウンロードし、プロジェクトのビルドや実行をします。

アーカイブ形式

JARとWARとは

JAR(Java ARchive)とWAR(Web ARchive)は、Javaで使用されるアーカイブ形式です。

JAR

JARは、Javaプラットフォームに依存するJavaアプリをアーカイブするために使用されます。JARファイルは、Javaのクラスファイル、リソースファイル、メタデータファイルMANIFEST.MFなどを含み、Javaの実行可能ファイルの配布に使用されます。

WAR

WARは、Java EE Webアプリケーションをアーカイブするために使用します。WARファイルには、JSP、HTML、CSS、JavaクラスなどのWebアプリケーションに必要なすべてのファイルを含みます。Webアプリケーションの構成を記述するためのweb.xmlに、セキュリティ、コンテキストパス、サーブレットのマッピング、データソースなどの設定を指定できます。

どちらを選択するか?

Spring Bootでは、一般的に依存ライブラリなど、必要なすべてのファイルを含むJARファイルを使用することが推奨されます。Springアプリケーションは、Java EE Webアプリケーションではなく、単純なJavaアプリケーションであるのが理由です。

プロジェクト作成

VSCodeでプロジェクト作成

VSCodeで新しいウィンドウを開き、エクスプローラーから【Create Java Project】をクリックします。

Spring Boot選択

メニューから「Spring Boot」を選択します。

ビルドツール選択

ビルドツールで「Maven」を選択します。

Springバージョン

Spring Bootのバージョンを選択します。今回は「3.0.x」系を選択します。

プログラミング言語選択

プログラム言語は「Java」を選択します。

グループID

グループIDはアプリケーションの個別IDで、Webのドメインやプロジェクト名組み合わせます。ここでは「com.example」とします。

プロジェクト名

プロジェクト名を入力します。ここでは「demo」とします。

パッケージング選択

プロジェクトのパッケージ方式を選択します。ここでは「jar」とします。

Javaバージョン選択

Javaのバージョンを選択します。ここでは「17」とします。

ライブラリ選択

Spring Bootで利用するライブラリを選択します。

ライブラリ 説明
Lombok Javaでクラスを作成する際に煩雑なコードを簡潔にする
Spring Dev Tools Spring Bootに基本機能で、自動的にプログラム変更を検出し、再起動なしでアプリケーションを更新、自動ビルドで再読み込み
Spring Web Spring Bootに基本機能で、Spring MVCをベースとしたWebアプリケーションフレームワーク
Thymeleaf Spring Bootの主流のテンプレートエンジンの一つで、HTMLファイルにJavaのコードを埋め込むことが可能

ライブラリ検索

プラグインが見つからない場合は、コマンドパレットのダイアログに文字を入力してプラグインを検索するとよいでしょう。

プロジェクトを開く

インターネットからライブラリをダウンロド&インストールし、ビルドが始まります。インストールが完了したらダイアログの【Open】でプロジェクトが開きます。

プロジェクトが作成されました。

アプリケーションの起動

プロジェクトファイル

プロジェクトの中身は以下のとおりです。

プログラムソース

プログラムソースは srcフォルダで管理します。Javaのプログラムソースはデフォルトで src/main/java/ 以降に配置します。

  • com.example.demoは、プロジェクト作成時に設定したグループIDとアプリ名です。

メインプログラム

Spring Bootのメインプログラムは「DemoApplication.java」となっています。

  • 「Demo」の部分はプロジェクト作成で指定した名称です。
DemoApplication.java
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}
  • プロジェクト作成時に設定したプロジェクト名がdemoに関連してDemoApplicationとなっています。

Mavenの確認

pom.xmlはアプリのMavenでビルドする設定ファイルです。プロジェクト作成時に、pom.xmlにライブラリの依存関係が自動生成されますが、手動で設定することも可能です。

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

Springサーバ起動

Javaファイルから起動

メインファイル「DemoApplication.java」から、【Start】ボタンでアプリを起動します。

Spring Boot Dashboardで起動

VSCodeの「Spring Boot Dashboard」プラグインをインストールしている場合、「Spring Boot Dashboard」からサーバ起動できます。

ターミナル確認

サーバが起動し、ターミナルにログが表示されます。ポート8080でサーバ待機中になれば成功です。

ブラウザで確認

http://localhost:8080/ にアクセスします。「Whitelabel Error Page」が表示されれば成功です。

  • URLにコンテンツがないときはこのエラーが表示されます。

Springサーバ停止

Springサーバを停止するには、VSCodeで表示されたパネルから【Stop】ボタンをクリックします。

サーバが停止しているので、http://localhost:8080/ にアクセスできません。

演習

問題1

MavenやGradleについて正しいのはどれですか?

  1. Javaの統合開発環境(IDE)
  2. Javaのビルドツール
  3. Javaのプログラミング言語のバージョン管理ツール
  4. Javaのデータベース接続ライブラリ

問題2

pom.xmlの説明で正しいのはどれですか?

  1. Javaプログラムの実行時の設定を定義するXMLファイルである。
  2. WebアプリケーションのフロントエンドのHTMLとCSSを格納するディレクトリである。
  3. Mavenプロジェクトの設定や依存関係を管理するためのファイルである。
  4. Spring Bootアプリケーションのコントローラクラスを記述するためのファイルである。

問題3

dependenciesの説明で正しいのはどれですか?

  1. 数学的演算を行うためのライブラリ
  2. データベースからデータ取得するためのSQLクエリ
  3. プロジェクトが利用する外部コンポーネントやライブラリの指定
  4. グラフィックデザインをするためのツール

Spring超入門