Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

さくっと理解するSpring bootの仕組み

35 431 vues

Publié le

【東京】JJUG ナイト・セミナー 「入門Spring Boot&Spring Cloud」 1/23(月)、JSUG共催

Publié dans : Logiciels
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

さくっと理解するSpring bootの仕組み

  1. 1. さくっと理解する Spring Boot のしくみ JJUG ナイトセミナー 2017.1.23 株式会社タグバンガーズ 小川岳史
  2. 2. • 株式会社タグバンガーズ • JSUG スタッフ • Spring Lover (10 years) • Spring I/O, Spring One 参加 • WallRide (OSS) • From 横浜 • TagBar 自己紹介 1
  3. 3. Spring と Spring Boot の関係 Spring Boot が改善する開発プロセス Spring Boot の構成要素 今日話すこと 2
  4. 4. Spring と Spring Boot の関係 3
  5. 5. そもそも Spring ってなに? 4 次のセッションで話します Spring ≒ Spring Framework DIコンテナの機能を含む コアプロジェクト 今回話すプロジェクト
  6. 6. • ざっくりいえば・・ Spring と Spring Boot の関係 5 Spring から 面倒な設定を排除し Tomcatを追加したもの が・・ Spring Boot Spring CONFIG
  7. 7. Spring Boot が改善する 開発プロセス 6
  8. 8. 一般的な開発のプロセス 7 1. 必要なライブラリのリストアップ 5. モニタリング 2. 起動に必要な Bean の定義をする 3. プログラミング 4. パッケージング・デプロイ
  9. 9. 1. 必要なライブラリをリストアップ 8 <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.3.4.Final</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>2.0.0.BUILD-SNAPSHOT</version> </dependency> </dependencies> Before 記述量が減る バージョンの互換性を気にしなくてよい <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> After
  10. 10. 2.起動に必要な Bean の定義をする 9 spring-boot-starter-xxx Starters 自分でBean定義 Container 自動で Bean を定義してくれる AutoConfigure
  11. 11. 3. プログラミング 10 Tomcat 内包 生産性が上がる
  12. 12. 4. パッケージング・デプロイ 11 $ ./app.jar Fully Executable jar
  13. 13. 5. モニタリング 12 After エンドポイントの自動配備
  14. 14. Spring Boot のしくみ 13
  15. 15. Spring Boot の構成要素 14 CLI Starter Actuator Auto-configure Tools 起動が楽になる Core ライブラリ同士の バージョン互換を 解決 自動でBeanを 準備してくれる アプリの モニタリング ひな形を CLI ベースで 作れる Test 開発効率を 上げる 便利ツール JUnit の ユーティリティ
  16. 16. Core 起動が簡単に! 15 CLI Starter Actuator Auto-configure Tools Core Test
  17. 17. Tomcatが内包されている 16 Starter Jetty, Undertow に置き換えできる Tomcat 7 から組み込み版が対応 → Spring Boot がこれを組み込みした CLI Actuator Auto-configure Tools Test 起動が 楽になる Core
  18. 18. • バイナリ1+コマンド1発で起動したい • が、Java はネストした jar を用意していない • よくある対応策 … uber jar (fat jar) • jar の中のコンテンツを全て展開してもう一度まとめる • 問題点 • どのコンテンツがどのものかわからない • jar 内のコンテンツ名前がかぶる可能性がある • Spring Boot が作成する jar … Nested jar • uber jar (fat jar) ではない • 特殊なローダーに内包することでネストした jar を作っている Fully Executable Jar 17 Starter CLI Actuator Auto-configure Tools Test 起動が 楽になる Core
  19. 19. Executableにするには設定が必要 Maven Fully Executable Jar 2 18 Starter CLI Actuator Auto-configure Tools Test 起動が 楽になる Core <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> springBoot { executable = true } Gradle
  20. 20. Starters ライブラリ同士のバージョン互換 を解決 19 CLI Starter Actuator Auto-configure Tools 起動が楽になる Core 自動でBeanを 準備してくれる アプリの モニタリング ひな形を CLI ベースで 作れる Test 開発効率を 上げる 便利ツール jUnit の ユーティリティ
  21. 21. • 実態はpomしかない • 自分で Starterをつくれる Starters の実態 20 Starter CLI Actuator Auto-configure Tools Test Core pom の 記述が減る
  22. 22. Auto-configure 自動でBeanを準備してくれる 21 CLI Starter Actuator Auto- configure Tools 起動が楽になる Core アプリの モニタリング ひな形を CLI ベースで 作れる Test 開発効率を 上げる 便利ツール jUnit の ユーティリティ
  23. 23. 進化した設定の簡易化 - xml 22 Starter CLI Actuator Auto-configure Tools Test 自動で Beanを 準備 Core
  24. 24. 進化した設定の簡易化 - annotation 23 Starter CLI Actuator Auto-configure Tools Test 自動で Beanを 準備 Core
  25. 25. 進化した設定の簡易化 – Boot 24 Starter CLI Actuator Auto-configure Tools Test 自動で Beanを 準備 Core
  26. 26. @ConditionalOnClass /Bean 25 Starter CLI Actuator Auto-configure Tools Test 自動で Beanを 準備 Core @ConditionalOnClass @ConditionalOnMissingClass @ConditionalOnBean @ConditionalOnMissingBean 実行時ビルド時@Bean @Component Context に○○ Bean があれば ClassPath に○○クラスがあれば Context に○○Bean がなければ ClassPath に○○クラスがなければ Starters spring-boot-starter-xxx
  27. 27. Actuator アプリのモニタリング 26
  28. 28. • Cloud Nativeなアプリを作るときに、 Cloudがアプリのことを知るために必要な あるあるエンドポイント(ヘルスチェックや メトリックスなど)を自動的に用意してくれる • Spring Cloudフレンドリ • CloudがActuatorのエンドポイント使ってる • Zool:reverse proxy • Actuatorの/route 使ってる Actuator が使われる場面 27 Starter CLI Actuator Auto-configure Tools Test Core アプリの モニタリング
  29. 29. Tools 開発効率が上がるツール群 28 CLI Starter Actuator Auto-configure Tools Core Test
  30. 30. • Automatic restart • LiveReload • 開発時のためのデフォルトプロパティ Devtools 29 Starter CLI Actuator Auto-configure Test Core Tools お役立ち ツール群
  31. 31. • Springの自動再起動 • 2つのクラスローダー • 再起動用 • よく変更するクラス • 非再起動用 • 外部Jarで読み込んでいる クラスファイルなど • vs JRebel や Spring Loaded • Tomcatの再起動ではない • DI コンテナ(=Spring)のリロード • よく変更するクラスファイルだけ再読込し 再起動 • →Tomcatのリスタートよりかは速い Automatic restart 30 spring tomcat jvm Starter CLI Actuator Auto-configure Tools Test Core 再起動用 クラスローダー 非再起動用 クラスローダー ここだけ再起動 通常起動する場合
  32. 32. • 自動でリロードしてくれるブラウザの プラグインに対応 • 特定ポートに対してメッセージを送ってリロード • Spring BootがLiveReloadに対応してる • ソースコード変更時に自分でリロードしなくても 勝手にリロードして表示してくれる LiveReload 31 Starter CLI Actuator Auto-configure Test Core Tools お役立ち ツール群
  33. 33. • application.properties に 設定を手動で記載しなくても Spring Boot Devtools がデフォルトで セットしてくれる • 例:開発時はデフォルトでキャッシュOFF 開発時のためのデフォルトプロパティ 32 Starter CLI Actuator Auto-configure Test Core Tools お役立ち ツール群
  34. 34. • 地味にビルドを助けてくれるプラグイン • Mavenプラグイン • mavenコマンドでSpring bootをキックできる • Gradleのプラグイン • Mavenでしかできない記述がかける • <Dependency management></> • <provided> 的なの Maven / Gradle Plugin 33 Starter CLI Actuator Auto-configure Test Core Tools お役立ち ツール群
  35. 35. まとめ 34
  36. 36. Spring Boot のはじめかた 35 IDE STS IDEA Eclipse ... Initializer start.spring.io Build tool Maven Starter @SpringBoot Application jar Code Tomcat CLI Gradle
  37. 37. • Spring Boot は劇的な変化をもたらすというよりかちょっとし た改善の積み重ねで開発が楽になるもの • アイデアがグッド • クラウドサービスの登場によってエンタプライズ(ミッションク リティカル)だけじゃなくもっと幅広い層に使えるようになって きた • Java / Spring がもっと身近なものに。 • PHPのお手軽さ以上のものを手にいれた むすびに 36
  38. 38. Thank you!

×