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を押せばいいです
プロジェクトを作成する
- メニューから「ファイル」→「新規」→「その他」と進み、「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
が見つからない」などのトラブルが残っています。
これは、必要なパッケージをまだプロジェクトに取り込んでいないからです。
上記にもある通り、このプロジェクトにおけるパッケージ管理はMavenが引き受けています。
そして、Mavenによってプロジェクトを更新する際は、プロジェクトを右クリックして「Maven」⇨「プロジェクトを更新...」し、
出てくるダイアログの「OK」をクリックすれば完了します。
ところがここに罠が隠されています!
Mavenで更新する前にある作業をする必要があるのです!
pom.xmlの修正を忘れずに
……具体的にはここです。これを追加し忘れてると、Mavenはこれをプロジェクト内に取り込まず、結果としてorg.springframework.web
の問題が解決されません。 修正後にMavenで更新した後、プロジェクトを右クリックして
「実行」⇨「Spring Boot アプリケーション」をクリックすれば、Spring Bootがビルドされ、起動します。
ログから察せられるように、Spring BootはTomcat上で動作し、一体となってWebサーバーとして振舞います。
参考資料にもスライドへのリンクを載せましたが、この際単一の.jarファイルとしてビルドされるのがSpring Bootの大きな特徴の一つです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
プロキシに注意!
Spring Bootが起動しますと、デフォルトではhttp://localhost:8080/にアクセスすればOKです。
上記のコードでは、「Hello Wolrd!」とだけ表示されたWebページを確認できるはずです。
ただし、このページはネットワーク設定でプロキシを使うようにしていると到達できません。 なので、ローカルアクセスではプロキシを回避できるように設定しましょう。MacOSの場合はこんな感じでした。
Eclipseには導入用のプラグインがありますので、Mavenと合わせて使うことで簡単にSpring Boot環境を構築できました。
もっとも、pom.xml
の罠とプロキシサーバーの罠には引っかかってしまいましたが……。
- 閲覧数 15956
コメントを追加