#目的
前回記事は、Spring Initializr を使って爆速でHello World!!!と急いでいる人向けの記事でした。
今回はSpring Quickstart Guideを参考にゆっくり進めてみようと思います。
#事前準備
統合開発環境は、 IntelliJ IDEA, Spring Tools, Visual Studio Code, Eclipseが人気らしいですね。
私は、Visual Studio Code(以下VSCode)
を使用します。
Javaの開発をするための開発キットは、AdoptOpenJDKのversionは、8か11がオススメみたいです。
OpenJDK11を導入する方法をJava開発環境構築に記載していますので、未だの人はそちらを参考にしてみてください。
#1.SpringBoot projectを始めよう!
まずは、spring initializrにアクセスします。
ProjectはMavenを選択します。
プログラムが実行できるように、ソースコードの解析やプログラミング言語を機械語にコンパイルをしてくれるもの。
参考URL:知識ゼロからAnt と Maven と Gradle について勉強する。-ビルドの定義からツールの特徴まで
Languageは、Javaを選択します。
SpringBootは、2.3.1を選択します。(2020/6/30現在)
公式では、versionは定期的に変わるので一番新しいversionを選んでください。(ただし、SNAPSHOTは選択しないでください)
と書かれています。
webと入力してください。
そして、Spring Web
を選択してください。
Spring Webとは、
Spring MVC を使用して、RESTful を含む Web アプリケーションを構築するための設定です。
最後にProject Metadata
を編集していきます。
Group:プロジェクトを一意に識別する名前。 プロジェクトのルートパッケージ名を指定するのが一般的。
Artifact:プロジェクトの成果物の名前。Artifactと同じ名称を使用することが推奨されているみたいで、こちらを変更するとNameも変更されます。
Name:プロジェクトの表示名。Mavenの場合、mainプログラムのクラス名としても使われます。Artifactと同じ名称を使用することを使用することが推奨されているみたいで、こちらを変更するとArtifactも変更されます。
Description:プロジェクトの説明を入力します。
Package Name:プロジェクトのパッケージ名。通常は、Groupで指定したパッケージとArtifactで指定した名称で構成されます。(Group名.Artifact名となる)
Packaging:パッケージする方法をJarもしくはWarのいずれかを選択します。
今回はJava11を使用するので、11を選択してGENERATE
ボタンをクリックします。
そのZipファイルを展開してください。
準備完了です。
#2.コードを追加しよう!
先ほどのフォルダをVSCodeで開きます。
Java Extension Packのインストールを推奨します。と言われるのでインストールしておきましょう。
そして、src/main/java/com/example/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);
}
}
クラスの上に記述されている@〇〇は、アノテーションと言います。
アノテーションとは注釈の意味であり、あるデータに対して関連する情報を注釈として付ける事であり、
プログラムの中では記述されたコードに注意書きを追加する機能となります。
@SpringBootApplicationというアノテーションを記述することで、Spring Bootの起動クラスとして必要な機能が自動的に組み込まれます。
公式を参考にコードを追加します。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
@RestControllerというアノテーションを記述することで、クラスをControllerとして認識してくれます。
Viewへ遷移しないため、メソッドの戻り値がそのままレスポンスボディに書き込まれます。(今回は、Hello 〇〇!と返されます)
@GetMappingというアノテーションを記述することで、そのURLでアクセスされた時にメソッドが呼ばれるようになります。
今回は、http://localhost8080/hello とアクセスされた時にhelloメソッドが呼ばれるようになっています。
@RequestParamというアノテーションを記述することで、URLのクエリパラメータを受け取る事が出来ます。
今回は、?name=〇〇とアクセスすると、〇〇に入った値が変数nameに格納されるようになっており、何も指定がない場合は、Worldが格納されます。
#3.実行してみよう!
ターミナルでこのプロジェクトファイルがあるフォルダーに移動します。
そして./mvnw spring-boot:run
を入力して実行します。
$ ./mvnw spring-boot:run
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< com.example:demo >--------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.3.1.RELEASE:run (default-cli) > test-compile @ demo >>>
〜省略〜
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
2020-06-30 11:41:46.106 INFO 64839 --- [ main] com.example.demo.DemoApplication : Starting Demo
〜省略〜
と表示されたら成功です!
http://localhost:8080/hello にアクセスしてみてください。
Hello World!と表示されていますね。変数nameにはWorldが入っているからです。
では次に以下のように、URLのhelloの後ろに、/?name=任意の文字列
を追加してみてください。
http://localhost:8080/hello/?name=tanaka
Hello tanaka!と表示されていますね。変数nameにはtanakaが入っているからです。
#終わりに
今回は公式を参考にゆっくりと進めて行き、Webアプリケーションの土台を作成する事が出来ました。
ご自身でコードを変更してはブラウザで確認するといった学習にご活用いただければと思います。