初めての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のコントローラクラスに付与するアノテーションで、JsonやXML等を返す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以外の代表的なライブラリは、以下です。
tomcat : アプリケーションサーバのライブラリ
hibernate-validator : 入力チェックを行うライブラリ
jackson : Jsonを扱えるようにするためのライブラリ
logback : ログ出力のライブラリ
junit : テストのライブラリ
とりあえず、今回は以上です。
これからSpring Bootで開発していくので、気づきがあればまた書きます。