SIer だけど技術やりたいブログ

SpringBootでHelloWorld

Java Spring SpringBoot

最近の流行りに乗っかれていないので、SpringBootを試してみる。

そもそもSpringBootとは

JavaEEと並んでメジャーなフレームワークに『Spring』というものがある。
Springは以下のような複数のプロジェクト(抜粋)から構成されていて、このプロジェクトのひとつがSpringBoot。

  • Spring Framework

    • DIxAOPコンテナやトランザクション管理、ウェブアプリケーション、データアクセスなどを含むコアプロジェクト。
  • Spring Data

    • データアクセス(RDB、NoSQLなど様々)のテンプレートコードを削減するためのプロジェクト。 (JPAみたいにSQLを自動生成してくれるようなイメージ)
  • Spring Security

    • セキュリティ関連のプロジェクト。
  • Spring Cloud

    • クラウド開発関連のプロジェクト。よくわかってないので、今後勉強したい。
  • Spring Boot

    • Springはカスタマイズ性が高い代わりに、設定できる項目が多い。
      そういう設定項目について、「だいたいのアプリ開発ではこんなもんでいいっしょ」という設定をしてくれるプロジェクト。
      そのほかにも開発スピードを上げるために色々提供している。

SpringBootの特徴

  • 組み込みサーバ(Tomcat,Jetty,Undertow)

  • ビルド後のjarは java -jar で実行可能

  • プロジェクトを簡単に作成できる (Spring Initializr)

    • 使いたいプロジェクトをWEBコンソールから選べば、作成できる
  • 快適に開発できる (spring-boot-devtools)

    • クラスを修正したら自動でrestartされる
    • フロント開発時にLiveReloadができる

環境

プロジェクトの作成

  • EclipseSTSというSpring関連のプラグインが提供されているのでインストールする。 参考: 「第4章」Spring Tool Suite(STS)プラグインのインストール - Qiita

  • Spring Initializrでプロジェクトを作成する
    右クリック New > Other > Spring Starter Project f:id:kimulla:20160111192556j:plain

  • 適当にプロジェクト名を決める。
    ビルドツールにはmavenかgradleを選べる。 f:id:kimulla:20160111192841j:plain

  • 利用したいプロジェクトを選ぶ。
    今回はとりあえずWebだけ。 f:id:kimulla:20160111194430j:plain

  • 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に変換されているのがわかる。

f:id:kimulla:20160111201500j:plain

終わりに

すぐhelloworldできますね。

参考にしたURL