初めてのSpring Boot

前から気になっていたSpring Bootを試してました。 感想としては、セットアップがめっちゃ簡単で、アプリケーション開発だけに専念させてくれそうでした。

以下に、やったことをまとめます。

セットアップ

GradleやMavenのセットアップが面倒くさいので、Springが提供しているサンプルを入手します。

git clone https://github.com/spring-guides/gs-spring-boot.git
cd gs-spring-boot/complete/

次はアプリケーションの起動です。 このコマンドだけで内蔵されているTomcatが起動します。

./gradlew build && java -jar build/libs/gs-spring-boot-0.1.0.jar

最後は動作確認です。 見事結果が返却されました。セットアップが楽すぎます。

curl localhost:8080
> Greetings from Spring Boot!

コード

Application.java

アプリケーションのエントリポイントのクラスです。

ポイントは@SpringBootApplicationアノテーションを付与していることです。

@SpringBootApplication
public class Application {
    
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        
        System.out.println("Let's inspect the beans provided by Spring Boot:");
        
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }
    }

}
HelloController.java

HelloControllerがコントローラクラスですね。

@RestControllerは、Springのコントローラクラスに付与するアノテーションで、JsonXML等を返すWebAPIの場合に付与します。 ちなみに、Viewを表示したい場合はもう一つのアノテーション@Controllerを利用します。

@RequestMappingは、HTTPリクエストを受け付けるメソッドを定義するためのアノテーションで、URLのパスを記述します。具体値を"/"から"/hello-world"に置き換えると、先ほどのcurlコマンドのURLはlocalhost:8080/hello-worldに変わります。

@RestController
public class HelloController {
    
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
    
}

コードは以上です。

めんどくさいxml周りの定義が一切なくなっているのが特徴です。

おそらく@SpringBootApplicationが全てを隠蔽してくれてるんだろうなぁっと想像しています。

依存しているライブラリ

次はgradleの設定を見てみます。特に依存ライブラリに注目します。 依存ライブラリは以下なんですが、これだけで様々なライブラリが網羅されています。

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    // tag::actuator[]
    compile("org.springframework.boot:spring-boot-starter-actuator")
    // end::actuator[]
    // tag::tests[]
    testCompile("org.springframework.boot:spring-boot-starter-test")
    // end::tests[]
}

具体的に依存している全てのライブラリを見たい場合は、以下のコマンドを実行します。

./gradlew -q dependencies

実際にやってみると様々なライブラリに依存していることがわかります。

Spring以外の代表的なライブラリは、以下です。

とりあえず、今回は以上です。

これからSpring Bootで開発していくので、気づきがあればまた書きます。