spring boot introduction

28
Spring Boot 2014-7-19 第七回 #渋谷java

Upload: chibochibo

Post on 26-Jun-2015

1.363 views

Category:

Software


2 download

DESCRIPTION

This slide is a brief introduction of Spring Boot.

TRANSCRIPT

Page 1: Spring Boot Introduction

Spring Boot2014-7-19

第七回 #渋谷java

Page 2: Spring Boot Introduction

自己紹介

● 島本 多可子(しまもと たかこ)● 今年4月にBizReachに入社● ここ数年はScalaばかり● 食わず嫌いだったRubyを勉強中

○ 先生は引退して去っていきました

● Javaは・・・○ そーいえば最近書いてないなぁ (´・ω・`)ショボーン

Page 3: Spring Boot Introduction

でもJavaの話します(`・ω・´)キリッ

Page 4: Spring Boot Introduction

今日お話すること

● Spring Bootって何?● Spring Bootを使ってみる● Spring Bootの主な機能● で、何がうれしいの?

Page 5: Spring Boot Introduction

Spring Bootとは

● 最小限の工程で実用可能なSpringアプリケーションを作ることができる○ 生産性が向上する

● 「java -jar」でアプリを起動できる!● 流行のDropwizardにインスパイア

Page 6: Spring Boot Introduction

特徴

● XMLの設定が不要● Spring周りの複雑な依存関係がまとめられ、

pomがシンプルに● Embeddedサーブレットコンテナをサポート● 非機能面のサポートが充実

○ メトリクス、ヘルスチェック、設定の外部化など

Page 7: Spring Boot Introduction

構成

● Webアプリの部分はSpring MVCベース● あとはテンプレートやO/Rマッパなどを自由に組み合わせる

Tomcat or Jetty

Spring

Spring MVC Thymeleaf   ・・・

全部を1つのjarにして実行できる

Page 8: Spring Boot Introduction

使ってみる

● ビルドはMaven○ 他にもGradle、Ant、Spring Boot CLIが使える

● 作るもの○ コントローラ(必要に応じてレイヤリング)○ エントリポイントとなるメインクラス

Page 9: Spring Boot Introduction

pom.xml

● parentに以下を指定

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.1.4.RELEASE</version></parent>

Page 10: Spring Boot Introduction

pom.xml

● dependenciesは1つだけ

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>

Page 11: Spring Boot Introduction

コントローラ

● Spring MVCのアプリ

@RestControllerpublic class SampleController { @RequestMapping("/") public String home() { return "Hello Spring Boot!!"; }}

Page 12: Spring Boot Introduction

メインクラス

● 実行のエントリポイントになる

@EnableAutoConfiguration@ComponentScanpublic class SampleApplication { public static void main(String[] args) { SpringApplication.run(SampleApplication.class, args); }}

spring-boot-autoconfigureの中にある設定ファイルspring.factoriesの設定で自動的にロードされる

Page 13: Spring Boot Introduction

実行

● mavenコマンドで実行

> mvn spring-boot:run

Page 14: Spring Boot Introduction

jarで実行するには

● pomにプラグインを追加

<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin></plugins>

Page 15: Spring Boot Introduction

実行

● javaコマンドで実行

> mvn package> java -jar target/spring-boot-sample-1.0-SNAPSHOT.jar

Page 16: Spring Boot Introduction

主な機能

● テンプレートエンジン

○ Thymeleaf(src/main/resources/templates配下に置い

ておくと、自動的に検知してくれる)

○ FreeMaker○ Groovy○ Velocity○ JSP

JSPはembeddedで動かす際に制限事項があるので避けたほうがよい

Page 17: Spring Boot Introduction

主な機能

● データベース○ 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)

Page 18: Spring Boot Introduction

主な機能

● 監視、デバッグ

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>

Page 20: Spring Boot Introduction

こんな感じ

Page 21: Spring Boot Introduction

今までのWebアプリとそんなに変わらないんじゃない?

Page 22: Spring Boot Introduction

違うんです!

Page 23: Spring Boot Introduction

jarですよ!

Page 24: Spring Boot Introduction

何がうれしいのか

● java -jarで実行できるということは、Javaの環境されあればどこでも動かせるということ

● あくまで1つのプロセスとしてWebアプリを起動● 従来のように、アプリケーションサーバを用意し

て、設定をして、warをデプロイして・・・といったことをしなくても動かせる

Page 25: Spring Boot Introduction

何がうれしいのか

● Immutable Infrastructureに沿ったアーキテクチャ○ コンテナベースのデプロイ○ Dockerを使って構築

● 断続的な開発で常に動く環境があることが重要○ コードをGitで管理○ プッシュされた変更をフックにしてビルドやデプロイ

● アプリケーションのアーキテクチャにも影響○ 横へのスケールが容易なこと○ 開発/プロダクション環境が同一視できること

Page 26: Spring Boot Introduction

まとめ

● Dropwizardと発想は同じ● Dropwizardと違って、Springという安心感とサ

ブモジュールが充実している● Javaの環境さえあれば動くので、Immutable

Infrastructureを構築しやすい● コード部分というより、開発~運用全体としての

生産性が向上する

Page 27: Spring Boot Introduction

Spring Boot気になった人は

Page 28: Spring Boot Introduction