狠狠撸

狠狠撸Share a Scribd company logo
Spring Boot
2014-7-19
第七回 #渋谷java
自己紹介
● 島本 多可子(しまもと たかこ)
● 今年4月にBizReachに入社
● ここ数年はScalaばかり
● 食わず嫌いだったRubyを勉強中
○ 先生は引退して去っていきました
● Javaは???
○ そーいえば最近書いてないなぁ (??ω?`)??????
でも闯补惫补の话します(`?ω??)???
今日お話すること
● Spring Bootって何?
● Spring Bootを使ってみる
● Spring Bootの主な機能
● で、何がうれしいの?
Spring Bootとは
● 最小限の工程で実用可能なSpringアプリケー
ションを作ることができる
○ 生産性が向上する
● 「java -jar」でアプリを起動できる!
● 流行のDropwizardにインスパイア
特徴
● XMLの設定が不要
● Spring周りの複雑な依存関係がまとめられ、
pomがシンプルに
● Embeddedサーブレットコンテナをサポート
● 非機能面のサポートが充実
○ メトリクス、ヘルスチェック、設定の外部化など
構成
● Webアプリの部分はSpring MVCベース
● あとはテンプレートやO/Rマッパなどを自由に組み合わせる
Tomcat or Jetty
Spring
Spring MVC Thymeleaf   ???
全部を1つのjarにして
実行できる
使ってみる
● ビルドはMaven
○ 他にもGradle、Ant、Spring Boot CLIが使える
● 作るもの
○ コントローラ(必要に応じてレイヤリング)
○ エントリポイントとなるメインクラス
pom.xml
● parentに以下を指定
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.4.RELEASE</version>
</parent>
pom.xml
● dependenciesは1つだけ
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
コントローラ
● Spring MVCのアプリ
@RestController
public class SampleController {
@RequestMapping("/")
public String home() {
return "Hello Spring Boot!!";
}
}
メインクラス
● 実行のエントリポイントになる
@EnableAutoConfiguration
@ComponentScan
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
spring-boot-autoconfigureの中にあ
る設定ファイルspring.factoriesの設
定で自動的にロードされる
実行
● mavenコマンドで実行
> mvn spring-boot:run
jarで実行するには
● pomにプラグインを追加
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
実行
● javaコマンドで実行
> mvn package
> java -jar target/spring-boot-sample-1.0-SNAPSHOT.jar
主な機能
● テンプレートエンジン
○ Thymeleaf(src/main/resources/templates配下に置い
ておくと、自動的に検知してくれる)
○ FreeMaker
○ Groovy
○ Velocity
○ JSP
JSPはembeddedで動かす際に制限事項があ
るので避けたほうがよい
主な機能
● データベース
○ Spring標準のSpring JDBC
○ サブプロジェクトのSpring Data JPA
● NoSQL
○ Redis(spring-boot-starter-redis)
○ MongoDB(spring-boot-starter-data-mongodb)
○ Solr(spring-boot-starter-data-solr)
○ Elasticsearch(spring-boot-starter-data-elasticsearch)
主な機能
● 監視、デバッグ
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
監視、デバッグ
● http://localhost:8080/beans(Springコンテキストに何が登
録されているか)
● http://localhost:8080/mappings(コントローラのマッピング
状態)
● http://localhost:8080/trace(HTTPリクエストのトレース)
● http://localhost:8080/metrics(アクセスカウンタ/メトリクス)
● http://localhost:8080/dump(スレッドダンプ)
● 他にもいろいろ???
こんな感じ
今までのWebアプリと
そんなに変わらないんじゃない?
违うんです!
箩补谤ですよ!
何がうれしいのか
● java -jarで実行できるということは、Javaの環境
されあればどこでも動かせるということ
● あくまで1つのプロセスとしてWebアプリを起動
● 従来のように、アプリケーションサーバを用意し
て、設定をして、warをデプロイして???といった
ことをしなくても動かせる
何がうれしいのか
● Immutable Infrastructureに沿ったアーキテクチャ
○ コンテナベースのデプロイ
○ Dockerを使って構築
● 断続的な開発で常に動く環境があることが重要
○ コードをGitで管理
○ プッシュされた変更をフックにしてビルドやデプロイ
● アプリケーションのアーキテクチャにも影響
○ 横へのスケールが容易なこと
○ 開発/プロダクション環境が同一視できること
まとめ
● Dropwizardと発想は同じ
● Dropwizardと違って、Springという安心感とサ
ブモジュールが充実している
● Javaの環境さえあれば動くので、Immutable
Infrastructureを構築しやすい
● コード部分というより、開発~運用全体としての
生産性が向上する
Spring Boot気になった人は
Spring Boot Introduction

More Related Content

Spring Boot Introduction