Spring Boot Introduction
-
Upload
chibochibo -
Category
Software
-
view
1.351 -
download
2
description
Transcript of Spring Boot Introduction
Spring Boot2014-7-19
第七回 #渋谷java
自己紹介
● 島本 多可子(しまもと たかこ)● 今年4月にBizReachに入社● ここ数年はScalaばかり● 食わず嫌いだったRubyを勉強中
○ 先生は引退して去っていきました
● Javaは・・・○ そーいえば最近書いてないなぁ (´・ω・`)ショボーン
でも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のアプリ
@RestControllerpublic class SampleController { @RequestMapping("/") public String home() { return "Hello Spring Boot!!"; }}
メインクラス
● 実行のエントリポイントになる
@EnableAutoConfiguration@ComponentScanpublic 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アプリとそんなに変わらないんじゃない?
違うんです!
jarですよ!
何がうれしいのか
● java -jarで実行できるということは、Javaの環境されあればどこでも動かせるということ
● あくまで1つのプロセスとしてWebアプリを起動● 従来のように、アプリケーションサーバを用意し
て、設定をして、warをデプロイして・・・といったことをしなくても動かせる
何がうれしいのか
● Immutable Infrastructureに沿ったアーキテクチャ○ コンテナベースのデプロイ○ Dockerを使って構築
● 断続的な開発で常に動く環境があることが重要○ コードをGitで管理○ プッシュされた変更をフックにしてビルドやデプロイ
● アプリケーションのアーキテクチャにも影響○ 横へのスケールが容易なこと○ 開発/プロダクション環境が同一視できること
まとめ
● Dropwizardと発想は同じ● Dropwizardと違って、Springという安心感とサ
ブモジュールが充実している● Javaの環境さえあれば動くので、Immutable
Infrastructureを構築しやすい● コード部分というより、開発~運用全体としての
生産性が向上する
Spring Boot気になった人は