【Spring Boot】Hello World!と表示するまで

  •  
 
トビウオ2018年4月18日 - 14:05 に投稿

概要

 JavaのWebフレームワーク「Spring Boot」の最新版を落として導入してみました。
 今回は、「Hello World!」とブラウザ上で表示した時点をゴールとします。

手順

環境を事前に準備する

項目 名称
PC MacBook Pro 13,1
OS macOS Sierra 10.12.6
IDE Eclipse 4.7.3a Oxygen
  • メニューから「ヘルプ」⇨「Eclipse マーケットプレース...」と選択します
  • 「STS」で検索し、出てきた「Spring ツール」をインストールします
  • 途中、署名なしコンテンツをインストールするかについて聞かれることもありますが、
    気にせずOKを押せばいいです

Eclipse マーケットプレース

プロジェクトを作成する

  • メニューから「ファイル」→「新規」→「その他」と進み、「Spring スターター・プロジェクト」
    を選択します。今回は気分により、赤枠で囲った箇所を変更しました
  • なお、ここで言うところの「グループ」とは、パッケージを識別するための名称のことです。
    「パッケージ」はJava本来のそれと同じものを指しますが、一般に「グループ」とは綴りを
    揃えることが多いようです

プロジェクトの設定

スタートアップ用のコードを確認

  • 当該プロジェクトの、「src/main/java」フォルダー内に、「SpringBootSample1Application.java」が出来ていることを確認します
  • ファイル名自体はプロジェクト作成時の設定に依存しますが、重要なのは「@SpringBootApplication」というアノテーションが
    付いているということです
  • このアノテーションは、Spring Bootにおけるスタートアップ用のルーチンであることを示します。
    つまり、ここのmainメソッドからアプリが起動するのです

スタートアップ確認

Controllerを記述

 次に、「Hello World!」と表示するためのコードを記述します。
 なお、例えば@RequestMapping("/hoge/fuga/")と記述しますと、
(サーバーのURL)/hoge/fuga/」に対するアクセスに対するレスポンスであることを表します。

アノテーション 意味
@Controller MVCにおけるControllerの役割であることを示す。@RestControllerに変更すると、@ResponseBodyは不要になる
@RestController Viewと絡まないシンプルなControllerであることを示す
@RequestMapping("/") リクエスト(URL+"/")に対するレスポンスであることを示す
@ResponseBody レスポンスボディーであることを示す。@RestController適用時は不要
package com.springboot.sample;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@EnableAutoConfiguration
public class MainController {
    @RequestMapping("/")
    @ResponseBody
    private String hello(){
        return "Hello World!";
    }
}

Mavenでプロジェクトを更新

 上記コードを書いた際に気づかれると思いますが、そのままだとこのコードは動きません
 具体的には、「org.springframework.webが見つからない」などのトラブルが残っています。
これは、必要なパッケージをまだプロジェクトに取り込んでいないからです。

Controllerを記述

 上記にもある通り、このプロジェクトにおけるパッケージ管理はMavenが引き受けています。
そして、Mavenによってプロジェクトを更新する際は、プロジェクトを右クリックして「Maven」⇨「プロジェクトを更新...」し、
出てくるダイアログの「OK」をクリックすれば完了します。

Maven

 ところがここに罠が隠されています!
 Mavenで更新する前にある作業をする必要があるのです!

pom.xmlの修正を忘れずに

 ……具体的にはここです。これを追加し忘れてると、Mavenはこれをプロジェクト内に取り込まず、結果として
org.springframework.webの問題が解決されません。 修正後にMavenで更新した後、プロジェクトを右クリックして
「実行」⇨「Spring Boot アプリケーション」をクリックすれば、Spring Bootがビルドされ、起動します。
 ログから察せられるように、Spring BootはTomcat上で動作し、一体となってWebサーバーとして振舞います。
参考資料にもスライドへのリンクを載せましたが、この際単一の.jarファイルとしてビルドされるのがSpring Bootの大きな特徴の一つです。

pomの修正

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

プロキシに注意!

 Spring Bootが起動しますと、デフォルトではhttp://localhost:8080/にアクセスすればOKです。
上記のコードでは、「Hello Wolrd!」とだけ表示されたWebページを確認できるはずです。

HelloWorld!

 ただし、このページはネットワーク設定でプロキシを使うようにしていると到達できません。 なので、ローカルアクセスではプロキシを回避できるように設定しましょう。MacOSの場合はこんな感じでした。

proxy

まとめ

 Eclipseには導入用のプラグインがありますので、Mavenと合わせて使うことで簡単にSpring Boot環境を構築できました。
もっとも、pom.xmlの罠とプロキシサーバーの罠には引っかかってしまいましたが……。

参考資料

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。