spring boot 触ってみた! ~Hello Woldを表示させるまで~

どうも、ささっきーです。

たまには技術系な記事を書きたいなーと思い
興味のあったspring bootを触ってみたので、
Hello Worldを表示させるまでを簡単にまとめたいと思います。

細かく言うと、アプリケーションを起動しブラウザでアクセスすると
「Hello World」という文言が表示されたページを表示させるまで、となります。

大まかに手順は以下。

  • 開発環境(STSの入手)
  • プロジェクト作成
  • テンプレート定義の追加
  • ソースの編集
    ・htmlファイル(ビュー)
    ・.javaファイル(コントローラ)
  • 実行

とりあえずのwebアプリ(ページ)を作成するのがここまで簡単とは思いませんでした。
正直、この記事書く時間より早かったですよw

開発環境(STSの入手)

spring bootでの開発を行うといってもいろいろ方法※があるみたいですが、
開発に必要なものが一通りそろっているeclipseベースのIDE「STS(Spring Tool Suit)」というのものがあるので、そちらを使用します。

※eclipseにspring bootを組み込んだり、visual studio codeにもプラグインとかあったり

STSの入手は以下のサイトから。(2019/11 時点)
https://spring.io/tools

ページを開いてすぐ下から自身の環境にあったものをダウンロードします。

私はWindows 64-bitをダウンロードしてます。

ダウンロードしたファイル(.jar)を解凍※して、
SpringToolSuite4.exe をダブルクリックして起動しましょう。

workspaceをどこにするかのウィンドウが表示されますので、
任意の場所を選択してください。
特に何も理由がなければデフォルトでも問題ありません。

※.jarファイルをダブルクリックすれば展開されます

〇.jarファイルの展開+STSの起動

プロジェクト作成

spring bootでは(というか大抵は)1つのアプリケーションを1つのプロジェクトとして扱っていきます。
ということで、早速プロジェクトを作成していきましょう。

画面左上から「New」>「Spring Starter Project」を選択します。
基本的にspring bootでの開発はSpring Starter Projectで行うらしいです。多分。

続いて、プロジェクトの設定を入力していくウィンドウが開かれるので、
適宜入力して進めましょう。

とりあえず下記の部分だけ変更してます。
・Name:HelloSpringboot
 プロジェクト名ですね。任意で大丈夫です。

・Group:com.helloSpringboot
 グループ名です。こちらも任意で。

・Package:com.helloSpringboot
 パッケージ名です。こちらも(ry

※ちょっとした補足
 ※spring bootのプロジェクトのビルドもいろいろな方法があるようですが、
  今回はSTSにデフォルトで組み込まれているMavenを使います
  なのでTypeはMavenのままにしています

 ※Javaはバージョン8にしてます
  該当バージョンのJavaがインストールされていることが前提になります

入力を終えたら「Next>」で次に進めましょう。
次のウィンドウでは作成するプロジェクトで何を作るかによって選択が変わってきます。

今回はただのWebページを表示するWebアプリですので、
「Spring Web」だけ選択しておきます。

この次のウィンドウはデフォルト設定のままでよいので
選択をしたら「Finish」を選んでください。

※ちょっとした補足
 ※記事内ではspring bootと書いておりますが、
  Spring Boot Versionに2.2.1とあるように正確にはspring boot2になります

 ※上記ウィンドウの次に選択するのは、
  各ライブラリなどをどこからダウンロードしてくるかのURLで、
  基本的に変更する必要はないと思われます

はい、これでプロジェクトが作成できました!

・・・実は作成後に必要なものをダウンロードしたりしているので、
右下のプログレスバーがゴニョゴニョ動いています。
上記はその様子を表示させた状態ですね。

このダウンロードが終わらないと左上のプロジェクトの構成も中途半端な感じになっております。

最後にはアプリケーションを実行させるのですが、
その実行メニューも表示されません。。

なので、ダウンロードが終わるまで少しコーヒーでも飲んで一息ついてくださいな。

テンプレート定義の追加

さぁ、ダウンロードは終わりましたかね。
おそらくプロジェクトのフォルダ構成もいろいろ変わってると思われます。
・・・すみません。それの画像はないですmm

これでプロジェクトが出来上がって、なんと実行も一応は可能な状態です。
ただそこは一応なので、今の状態で実行しても「・・・しょうもな」ってなるので、
やりません。
やりたい人はプロジェクト右クリック>「Run as」>「Spring Boot App」から実行し、
http://localhost:8080でアクセスいただければ。

さて、現状はプロジェクトがあるだけで、
アクセス(リクエスト)されたときに表示させるページがありません。
さらに言えば「このページを表示させてね」っていう指示をだす部分もありません。

なので「しょうもない」ことになるわけですね。

というわけで、
・アクセスされたときに表示するページ
・どのページを表示するかの制御
を作っていきます。

が、その前に
1つ準備が必要なのでそちらを行います。

実をいうとただ文字列を表示させるだけならこちらの準備はいらないのですが、
どうせならテンプレートエンジンを使いたいな、ということでそれを使う準備をします。

※テンプレートエンジンって何?ってのはグーグル先生にお聞きください

今回はThymeleaf(タイムリーフ)というものを使用しますので
こちらを使用するための定義を追加しましょう。
Androidアプリでandroidマニフェストに定義追加するみたいな感覚ですかね

プロジェクト内のpom.xmlファイルをダブルクリックで開きましょう。
中央のビューにpom.xmlファイルが表示されます。
その下のDependenciesタブ?を選択してください。

すると表示が切り替わりますので、左側の「Add」を選択してください。

追加する定義の設定を行うウィンドウが表示されるので下記の情報を入力してください。
Group Id:org.springframework.boot
Artifact Id:spring-boot-starter-thymeleaf

入力が終わったら「OK」を押して追加完了です。

ソースの編集

Thymeleafの定義も追加できたので、ようやくソースを作成していきましょう。
作成するのは以下の2ファイルです。

・index.html
 表示させるページ。

・HelloController.java
 コントローラとなるクラス。
 こいつで「アクセスを受けたら、このページを表示しろ」という制御を行います。

index.htmlの作成

まずはindex.htmlを作成していきましょう。
作成する場所は「src/main/resources/templates」配下になります。

パッケージエクスプローラ(STS左側のビュー)からtemplatesを右クリック
「New」>「Other」で表示されるメニューからHTMLファイルを選択し、
File nameを「index.html」としましょう。

入力ができたら「Finish」を押してください。
するとhtmlファイルが作成されます。

※ちょっとした補足
 ※省略していますが上記で「Next>」を選択すると
  HTMLのバージョンを選択できます
  今回はデフォルトのまま(HTML5)で進めるため、特に触れていません

あらかじめ何行かコードが書かれていますので、
少し追記して以下のようにしましょう。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テストページ</title>
</head>
<body>
<h1>Hello World!!</h1>
</body>
</html>

画像はこちら

これでindex.htmlはOKです。

HelloController.javaの作成

つづいてコントローラクラスを作成していきます。
コントローラと呼んでいますが「このアクセスが来たら、このページを表示させる」といった制御を行うものと思っていただければと思います。

左上のメニューから「File」>「New」>「Class」を選択してください。
設定は、Nameを「HelloContloller」と入力するくらいでいいでしょう。

作成したHelloContoroller.javaを開いて以下のように編集します。

package com.helloSpringboot;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {

 @RequestMapping("/")
 public ModelAndView returnPage(ModelAndView model) {
  model.setViewName("index");
  return model;
 }

}

主に@Controllerから下を追記して、電球アイコンからインポート文を挿入すれば楽だと思います。

〇電球アイコン右クリック>Import ~~ を選択

簡単にソースを説明すると、

@Controller
このクラスがコントローラであることを指定するアノテーション

@RequestMapping("/")
引数で指定したURLにアクセスされた際に実行するメソッドを指定するアノテーション

model.setViewName("index");
どのテンプレートを使用するかを設定。上記では先ほど作成した”index.html”を指定
.htmlは省略

最終的なイメージは以下になります。
赤い波線などが出ていないことを確認してください。

ここまででソースの作成は完了です。
一度左上の「File」>「Save All」からすべてのファイルを保存しておきましょう。
そうすることで、自動的にビルド(実行可能な状態にする)されます。

※ちょっとした補足
 ※コントローラというのはいわゆるMVCモデルのCの話です
  spring bootはMVCモデルで作成されることを前提としたもののようです

実行

お待たせしました! いよいよ実行ですね。

書くのも疲れてきたので、画像でちゃっちゃと説明します(オイ)

プロジェクトを右クリック>「Run As」>「Spring Boot App」を選択

すると下のコンソールビューに実行したログが出てきます。
下記のようになっていればOKです。
逆に失敗したところまだ見たことない、、

これでWebアプリケーションが起動されました!
実際にブラウザからアクセスしてみましょう!

ブラウザのURLに「http://localhost:8080/」と入力しアクセスしてください。
すると、index.htmlで記述した内容が表示されるはずです。

これでHello Worldを表示させることができました!!

 

まとめ

簡単、といっても手順を書いてみるとそれなりの量にはなりましたね。
いろいろ省略してるんですけどね。。

とはいえ、spring bootの場合、個別でサーバー立ててとかの必要はないみたいで、
とりあえずでwebアプリを作るのがすごく簡単、というのは間違いないですね。

そのうちspring bootでちょっとしたwebアプリでも作ってみようかしら。

 

ゆけむりんごではブログの新着記事などのお知らせをツイッターでしています。

みんなフォローしてね!