SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Spring Boot
2014-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のアプリ
@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アプリと
そんなに変わらないんじゃない?
違うんです!
jarですよ!
何がうれしいのか
● java -jarで実行できるということは、Javaの環境
されあればどこでも動かせるということ
● あくまで1つのプロセスとしてWebアプリを起動
● 従来のように、アプリケーションサーバを用意し
て、設定をして、warをデプロイして・・・といった
ことをしなくても動かせる
何がうれしいのか
● Immutable Infrastructureに沿ったアーキテクチャ
○ コンテナベースのデプロイ
○ Dockerを使って構築
● 断続的な開発で常に動く環境があることが重要
○ コードをGitで管理
○ プッシュされた変更をフックにしてビルドやデプロイ
● アプリケーションのアーキテクチャにも影響
○ 横へのスケールが容易なこと
○ 開発/プロダクション環境が同一視できること
まとめ
● Dropwizardと発想は同じ
● Dropwizardと違って、Springという安心感とサ
ブモジュールが充実している
● Javaの環境さえあれば動くので、Immutable
Infrastructureを構築しやすい
● コード部分というより、開発~運用全体としての
生産性が向上する
Spring Boot気になった人は
Spring Boot Introduction

Mais conteúdo relacionado

Mais procurados

Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用
amkt922
 
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つエンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
Yusaku Kinoshita
 
そろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでそろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやで
なおき きしだ
 

Mais procurados (20)

非エンジニアが MENstackでWebアプリをつくった話 #nodejs
非エンジニアが MENstackでWebアプリをつくった話 #nodejs非エンジニアが MENstackでWebアプリをつくった話 #nodejs
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
 
Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用
 
ぼくのNode.jsのだいいっぽ
ぼくのNode.jsのだいいっぽぼくのNode.jsのだいいっぽ
ぼくのNode.jsのだいいっぽ
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
 
[Java女子部LT]VB屋さんからJava屋さんにスキルチェンジした話
[Java女子部LT]VB屋さんからJava屋さんにスキルチェンジした話[Java女子部LT]VB屋さんからJava屋さんにスキルチェンジした話
[Java女子部LT]VB屋さんからJava屋さんにスキルチェンジした話
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
 
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つエンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
Java女子部よこな自己紹介
Java女子部よこな自己紹介Java女子部よこな自己紹介
Java女子部よこな自己紹介
 
Pythonで始める競技プログラミング
Pythonで始める競技プログラミングPythonで始める競技プログラミング
Pythonで始める競技プログラミング
 
pythonで始める筋トレ(競技プログラミング)
pythonで始める筋トレ(競技プログラミング)pythonで始める筋トレ(競技プログラミング)
pythonで始める筋トレ(競技プログラミング)
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
 
jQueryで気をつけてほしいこと
jQueryで気をつけてほしいことjQueryで気をつけてほしいこと
jQueryで気をつけてほしいこと
 
20150215勉強会
20150215勉強会20150215勉強会
20150215勉強会
 
Java女子部のあゆみ2014
Java女子部のあゆみ2014Java女子部のあゆみ2014
Java女子部のあゆみ2014
 
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておくいまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
いまNode Express4で書いてるディレクターが
初めて書き始める2ヶ月前くらいの自分に言っておく
 
ヤマムギ vol.4 kintone 入門ハンズオン
ヤマムギ vol.4 kintone 入門ハンズオンヤマムギ vol.4 kintone 入門ハンズオン
ヤマムギ vol.4 kintone 入門ハンズオン
 
そろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやでそろそろJavaみなおしてもええんやで
そろそろJavaみなおしてもええんやで
 
ヤマムギ vol.3 kintone 入門ハンズオン
ヤマムギ vol.3 kintone 入門ハンズオンヤマムギ vol.3 kintone 入門ハンズオン
ヤマムギ vol.3 kintone 入門ハンズオン
 

Semelhante a Spring Boot Introduction

最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
 
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugSpring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Toshiaki Maki
 
Getting start with knockout.js
Getting start with knockout.jsGetting start with knockout.js
Getting start with knockout.js
Akio Ishida
 
渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る
Naoki Iwami
 

Semelhante a Spring Boot Introduction (20)

これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境これからはじめるための JavaScript 開発環境
これからはじめるための JavaScript 開発環境
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfkSpring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
 
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsugSpring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
Spring4とSpring Bootで作る次世代Springアプリケーション #jjug #jsug
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
 
Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする
Cocoa勉強会関西 #55 MagicalRecordでCore DataをシンプルにするCocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする
Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする
 
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
 
社員旅行はもう古い! いいことづくめのワーケーション
社員旅行はもう古い! いいことづくめのワーケーション社員旅行はもう古い! いいことづくめのワーケーション
社員旅行はもう古い! いいことづくめのワーケーション
 
フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!
 
第83回名古屋アジャイル勉強会「一言で言うと、アジャイルってなんなの?」
第83回名古屋アジャイル勉強会「一言で言うと、アジャイルってなんなの?」第83回名古屋アジャイル勉強会「一言で言うと、アジャイルってなんなの?」
第83回名古屋アジャイル勉強会「一言で言うと、アジャイルってなんなの?」
 
Getting start with knockout.js
Getting start with knockout.jsGetting start with knockout.js
Getting start with knockout.js
 
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho ltNetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープじっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
 
Jsugプレゼン資料new
Jsugプレゼン資料newJsugプレゼン資料new
Jsugプレゼン資料new
 
師弟登壇2015 GMOペパボ @orzup
師弟登壇2015 GMOペパボ @orzup師弟登壇2015 GMOペパボ @orzup
師弟登壇2015 GMOペパボ @orzup
 
渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る渋谷Java#2 昔のJavaを振り返る
渋谷Java#2 昔のJavaを振り返る
 

Mais de chibochibo

Spark in small or middle scale data processing with Elasticsearch
Spark in small or middle scale data processing with ElasticsearchSpark in small or middle scale data processing with Elasticsearch
Spark in small or middle scale data processing with Elasticsearch
chibochibo
 

Mais de chibochibo (13)

Tour of Apache PredictionIO in 10 Minutes
Tour of Apache PredictionIO in 10 MinutesTour of Apache PredictionIO in 10 Minutes
Tour of Apache PredictionIO in 10 Minutes
 
Crawler Commons
Crawler CommonsCrawler Commons
Crawler Commons
 
LocalStack
LocalStackLocalStack
LocalStack
 
Deadly Code! (seriously) Blocking &amp; Hyper Context Switching Pattern
Deadly Code! (seriously) Blocking &amp; Hyper Context Switching PatternDeadly Code! (seriously) Blocking &amp; Hyper Context Switching Pattern
Deadly Code! (seriously) Blocking &amp; Hyper Context Switching Pattern
 
Dynamic SQL in doobie
Dynamic SQL in doobieDynamic SQL in doobie
Dynamic SQL in doobie
 
Is spark streaming based on reactive streams?
Is spark streaming based on reactive streams?Is spark streaming based on reactive streams?
Is spark streaming based on reactive streams?
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -
 
Quartzでcronを範囲検索したい
Quartzでcronを範囲検索したいQuartzでcronを範囲検索したい
Quartzでcronを範囲検索したい
 
nioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になったnioで作ったBufferedWriterに変えたら例外になった
nioで作ったBufferedWriterに変えたら例外になった
 
Spark Streaming on AWS -S3からKinesisへ-
Spark Streaming on AWS -S3からKinesisへ-Spark Streaming on AWS -S3からKinesisへ-
Spark Streaming on AWS -S3からKinesisへ-
 
Spark in small or middle scale data processing with Elasticsearch
Spark in small or middle scale data processing with ElasticsearchSpark in small or middle scale data processing with Elasticsearch
Spark in small or middle scale data processing with Elasticsearch
 
What's a macro?: Learning by Examples
What's a macro?: Learning by ExamplesWhat's a macro?: Learning by Examples
What's a macro?: Learning by Examples
 
Slick入門
Slick入門Slick入門
Slick入門
 

Spring Boot Introduction