####目標
複数回に分けて実施予定です。
- SpringBootとは何かをざっくり知る ←今回やります
- 環境構築&Hello World!を表示させる ←今回やります
- パラメータやオブジェクトの受け渡しをする
- 他の機能にも触れてみる
####参考文献
-
SystemLinkIT塾 SpringBoot入門講座
自分自身が初めてSpringBootを学習した際参考になりました。 -
Thymeleaf公式ドキュメント
公式ドキュメントだけあって非常に充実した内容です。
#SpringBootとは
Javaのフレームワークの一種であるspring
をより簡単に書けるようにしたものです。アノテーション(@Override
のように、@を付けた記述方法)を利用することで複雑なXML設定ファイルの記述が不要になり、非常に取っつきやすくなりました。
#環境構築
STS(Spring Tool Suite4)
という開発環境を使用します。Javaの開発環境として有名なEclipseをベースに、Springでの開発をより便利に進めるための機能が備わっています。
1.以下のサイトでSTSをダウンロードして実行。(zipの場合は解凍)
・STS(Spring Tool Suite)
sts-4.X.X.RELEASE
という名前のフォルダが作成されればOKです。
2.以下のサイトでSTSの日本語化パッチをダウンロード。(デフォルトが英語のため)
・Pleiades日本語化プラグイン
※ページトップの「Pleiades All in Oneダウンロード」ではなく、その一つ下にあります。
3.ダウンロードしたpleiades-win
内のsetupファイルを実行。
以下の画面が起動するので、「日本語化するアプリケーション」にsts-4.X.X.RELEASE
フォルダ内のSpringToolSuite4.exe
を指定して「日本語化する」をクリック。
STSを起動して、日本語になっていれば完了です!
#プロジェクト作成
STSを起動したら、[ファイル] - [新規] - [Springスターター・プロジェクト]を選択。
この画面は特に操作せず[次へ]をクリック。
※[型]ではMavenかGradleが選べますが、このページではMavenで実施します。
[新規Springスターター・プロジェクト依存関係]では、
・[開発ツール] - [Spring Boot DevTools]
・[テンプレート・エンジン] - [Thymeleaf]
・[Web] - [Spring Web]
の3つにチェックを入れて[次へ]をクリック。
依存関係についてはこのあと解説します。
この画面は特に操作せず[完了]をクリック。
以下のようなプロジェクトが作成されれば完了です!
####依存関係について
先ほどSpring Boot DevTools
、Thymeleaf
、Spring Web
にチェックを入れましたが、それによってpom.xmlに以下のコードが自動で記述されます。
<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>
名称 | 説明 |
---|---|
Thymeleaf | JavaのWebページ用テンプレートエンジン。SpringではjspではなくThymeleafを推奨しています。jstlやEL式のように記述します。 |
Spring Web | SpringBootのWebアプリケーションに必要なライブラリ。 |
Spring Boot DevTools | javaファイルを更新すると自動でアプリケーションを再起動してくれる等の便利な機能が使えるようになります。 |
そのため、Spirng Bootの機能を使用する場合はプロジェクト作成時の依存関係にチェックを入れる か、手動でpom.xmlに記述 することになります。 |
ざっくりとですがpom.xmlについても補足。
名称 | 説明 |
---|---|
Maven | Javaのプロジェクト管理ツール。pom.xmlを参照してアプリケーションのビルド・デプロイを簡単に行えるようにする。 |
pom.xml | pomはProject Object Modelの略。プロジェクトに必要なライブラリ群やバージョン情報を記述する。 |
#Hello World!(RestController編)
プロジェクトを作成するとsrc/main/java/com/example/demo
配下にjavaファイルが1つ自動で生成されていると思います。
このクラスは@SpringBootApplication
アノテーションによってSpringBootアプリケーションの起動クラスとして認識されています。
とくに手動でコードを追加する必要はありません。
####RestControllerクラス作成
それでは同フォルダにクラスを作成します。
com.example.demo
のアイコン上で右クリックし[新規] - [クラス]を選択。
[名前]にDemoRestController
を入力して[完了]をクリック。
作成したクラスに以下のコードを追加します。
(Eclipse操作したことない人へ・・・Ctrl+Sでファイルの保存、Ctrl+Shift+Oで自動importが可能です!)
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoRestController {
@RequestMapping(value="/rest",method=RequestMethod.GET)
public String hello() {
return "Hello World!";
}
}
####@RestController
クラスに記述。View(HTMLファイルなど)に遷移せず、メソッドの戻り値をそのままページに出力するためのコントローラクラスになります。
コントローラとは?(少し脱線するため折り畳み)
SpringおよびSpring Bootは`MVCモデル`という概念が存在するのですが、これは`Model`・・・検索や計算といった処理ロジックを担当する。 `View`・・・Modelの処理結果をクライアント側に表示する。 `Controller`・・・Viewから受け取った情報をModelに渡す。(逆も然り)
という役割を持ったプログラムの頭文字から来ています。
これによって、
http://localhost:8080/rest
にアクセス
↓
URLは/rest
、送信方法はGET
となる(URLを入力してページを表示する場合は自動でGETメソッドになります。なぜ?については teratailのこの質問 が分かりやすいです。)
↓
この情報に一致するhello
メソッドが呼ばれる
↓
戻り値の"Hello World!"
がページに出力される。
といった流れが出来上がります。
また、@RequestMapping
には以下のように送信方法付きのアノテーションが用意されています。簡潔に書けるため、次回からはこれを使います。
####@GetMapping("/URL")
@RequestMapping(value="/URL",method=RequestMethod.GET)
と同じです。
####@PostMapping("/URL")
@RequestMapping(value="/URL",method=RequestMethod.POST)
と同じです。
それではSpringアプリケーションを実行します。
まずは[ウィンドウ] - [ビューの表示] - [コンソール]をクリックしてコンソールを表示。
プロジェクト上で右クリックし、[実行] - [Spring Boot アプリケーション]の順にクリック。
コンソール上でSpring Bootの起動を確認したら、、、
ブラウザでhttp://localhost:8080/rest
にアクセスします。
Hello World!が表示されました!
#Hello World!(Controller編)
RestController編ではメソッドの戻り値でHello Worldを表示させていたので、今回はHTMLファイルで表示させてみましょう。
####HTMLファイル作成
src/main/resources/templates
上で右クリックし[新規] - [その他]を選択。
[web] - [HTMLファイル]を選択して[次へ]をクリック。
※[ウィザード]にhtml
と入力すると以下の画像のようにすぐ出てきます。
[ファイル名]にindex
と入力して[次へ]をクリック。
[テンプレート] - [新規HTMLファイル(5)]を選択(デフォルトで選択状態だと思います)して[完了]をクリック。
<body>
部分にHello World!
を追加します。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello World!
</body>
</html>
####Controllerクラス作成
次に、src/main/java/com/example/demo
上でDemoController
クラスを作成し、以下のコードを追加します。(作成方法はRestControllerクラス作成と同様)
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoController {
@RequestMapping(value="/",method=RequestMethod.GET)
public ModelAndView hello() {
ModelAndView mav=new ModelAndView();
mav.setViewName("/index");
return mav;
}
}
####@Controller
クラスに記述。@RestController
と異なり、Viewへ遷移できるコントローラクラスになります。もしこれを指定したクラスに、Viewに遷移させずに戻り値をページに表示するメソッドを定義したい場合は以下のように@ResponseBody
をメソッドに記述すればOKです。
@RequestMapping(value="/body",method=RequestMethod.GET)
@ResponseBody
public String body() {
return "Hello World?";
}
####ModelAndView
Model
(オブジェクトの管理)とView
(Webページ情報)の両方の機能を持ったクラスです。これら単体のクラスもありますが、基本的に使用するのはModelAndView
です。
主なメソッドは以下の通りです。
メソッド | 使い方 |
---|---|
setViewName("/ファイルパス") | 表示させるHTMLファイルのパスを指定します。templatesフォルダまでのパスは記述不要です。 |
addObject("パラメータ名",パラメータ) | Webページに渡すパラメータを[名前,値]のセットで格納します。(次回使います) |
それではhttp://localhost:8080
にアクセスしてみましょう。
Hello World!が表示されました!
HTMLなので、ページのタイトルに「Insert title here(デフォルトのタイトル)」が表示されていますね。
##おさらい
-
SpringBoot
はSpringをより使いやすくしたもの -
Spring Tool Suite
で簡単開発 -
@RequestMapping
でURLとメソッドの紐づけ -
@RestController
でメソッドの戻り値をページに表示 -
@Controller
でHTMLファイルをページに表示
今回はここまでです。お疲れ様でした。
次回からパラメータの受け渡しに入っていきます!