最近の流行りに乗っかれていないので、SpringBootを試してみる。
そもそもSpringBootとは
JavaEEと並んでメジャーなフレームワークに『Spring』というものがある。
Springは以下のような複数のプロジェクト(抜粋)から構成されていて、このプロジェクトのひとつがSpringBoot。
- DIxAOPコンテナやトランザクション管理、ウェブアプリケーション、データアクセスなどを含むコアプロジェクト。
Spring Data
Spring Security
- セキュリティ関連のプロジェクト。
Spring Cloud
- クラウド開発関連のプロジェクト。よくわかってないので、今後勉強したい。
Spring Boot
- Springはカスタマイズ性が高い代わりに、設定できる項目が多い。
そういう設定項目について、「だいたいのアプリ開発ではこんなもんでいいっしょ」という設定をしてくれるプロジェクト。
そのほかにも開発スピードを上げるために色々提供している。
- Springはカスタマイズ性が高い代わりに、設定できる項目が多い。
SpringBootの特徴
組み込みサーバ(Tomcat,Jetty,Undertow)
ビルド後のjarは java -jar で実行可能
プロジェクトを簡単に作成できる (Spring Initializr)
- 使いたいプロジェクトをWEBコンソールから選べば、作成できる
快適に開発できる (spring-boot-devtools)
- クラスを修正したら自動でrestartされる
- フロント開発時にLiveReloadができる
環境
プロジェクトの作成
EclipseにSTSというSpring関連のプラグインが提供されているのでインストールする。 参考: 「第4章」Spring Tool Suite(STS)プラグインのインストール - Qiita
Spring Initializrでプロジェクトを作成する
右クリック New > Other > Spring Starter Project利用したいプロジェクトを選ぶ。
今回はとりあえずWebだけ。Finishを押してプロジェクト作成完了。
pom.xmlにspring-boot-devtoolsを追加すると、クラス修正に応じてアプリのrestartを勝手にやってくれるので快適。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
SpringBootを起動する
プロジェクトを右クリック Run As> Spring Boot App
コードを書く
以下のようなコードを書く。 spring-boot-devtoolsを使っていると、コードを保存したときにrestartしてくれるのでちょっと快適。
package com.example;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("greetings")
public class GreetingRestController {
@RequestMapping(method = RequestMethod.GET)
public Greeting helloworld() {
Greeting greeting = new Greeting();
greeting.setGreeting("hello world!");
return greeting;
}
}
class Greeting {
private String greeting;
public String getGreeting() {
return greeting;
}
public void setGreeting(String greeting) {
this.greeting = greeting;
}
}
確認する
localhost:8080/greetings にアクセスすると以下のような結果が戻ってくる。 JavaBeanがJSONに変換されているのがわかる。
終わりに
すぐhelloworldできますね。