4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ゼロから始めるSpring Boot その1

Last updated at Posted at 2020-10-31

####目標
複数回に分けて実施予定です。

  1. SpringBootとは何かをざっくり知る ←今回やります
  2. 環境構築&Hello World!を表示させる ←今回やります
  3. パラメータやオブジェクトの受け渡しをする
  4. 他の機能にも触れてみる

####参考文献

#SpringBootとは
Javaのフレームワークの一種であるspringをより簡単に書けるようにしたものです。アノテーション(@Overrideのように、@を付けた記述方法)を利用することで複雑なXML設定ファイルの記述が不要になり、非常に取っつきやすくなりました。

#環境構築
STS(Spring Tool Suite4)という開発環境を使用します。Javaの開発環境として有名なEclipseをベースに、Springでの開発をより便利に進めるための機能が備わっています。

1.以下のサイトでSTSをダウンロードして実行。(zipの場合は解凍)

STS(Spring Tool Suite)
SpringBoot_2.png
sts-4.X.X.RELEASEという名前のフォルダが作成されればOKです。

2.以下のサイトでSTSの日本語化パッチをダウンロード。(デフォルトが英語のため)
Pleiades日本語化プラグイン
※ページトップの「Pleiades All in Oneダウンロード」ではなく、その一つ下にあります。
SpringBoot_4.png
3.ダウンロードしたpleiades-win内のsetupファイルを実行。
SpringBoot_5.png
以下の画面が起動するので、「日本語化するアプリケーション」にsts-4.X.X.RELEASEフォルダ内のSpringToolSuite4.exeを指定して「日本語化する」をクリック。


STSを起動して、日本語になっていれば完了です!

#プロジェクト作成
STSを起動したら、[ファイル] - [新規] - [Springスターター・プロジェクト]を選択。

この画面は特に操作せず[次へ]をクリック。
※[型]ではMavenかGradleが選べますが、このページではMavenで実施します。

[新規Springスターター・プロジェクト依存関係]では、
・[開発ツール] - [Spring Boot DevTools]
・[テンプレート・エンジン] - [Thymeleaf]
・[Web] - [Spring Web]
の3つにチェックを入れて[次へ]をクリック。
依存関係についてはこのあと解説します。

この画面は特に操作せず[完了]をクリック。

以下のようなプロジェクトが作成されれば完了です!

####依存関係について
先ほどSpring Boot DevToolsThymeleafSpring Webにチェックを入れましたが、それによってpom.xmlに以下のコードが自動で記述されます。

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が可能です!)

DemoRestController.java
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に渡す。(逆も然り)
という役割を持ったプログラムの頭文字から来ています。
####`@RequestMapping` メソッドに記述。クライアントからのリクエストとメソッドをマッピングするための機能です。引数を指定しますが、代表的なものは以下の2つ。 `value="/URL"`・・・指定したURLからのリクエストを受け取ります。 `method=RequestMethod.GET(またはPOST)`・・・指定した送信方法からのリクエストを受け取ります。

これによって、
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!を追加します。

index.html
<!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クラス作成と同様)

DemoController.java
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です。

@ResponseBodyの記述例
@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ファイルをページに表示

今回はここまでです。お疲れ様でした。
次回からパラメータの受け渡しに入っていきます!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?