Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spring starterによるSpring Boot Starter

JSUG勉強会 2016年その4 Spring I/O報告会
Spring starterによるSpring Boot Starter

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

Spring starterによるSpring Boot Starter

  1. 1. Boot starterが語るSpring bootの仕組み & Spring 5以降のReactiveな流れと フロントまわりの話 株式会社タグバンガーズ
  2. 2. 横浜・設立6年目・Webアプリ開発・ほぼSpring案件
  3. 3. TAG BAR 月1ぐらい開催してる社外の方を招いて行う勉強会 connpass(http://tagbar.connpass.com/)にて募集
  4. 4. 軽く自己紹介 佐々木 亜里沙(ささき ありさ) UIチーム・プロダクトチーム 北海道 内立 良介(うちたて りょうすけ) デベロップメントチーム 宮崎
  5. 5. Spring starterによる Spring Boot Starter 株式会社タグバンガーズ 内立良介
  6. 6. AGENDA Spring I/O 2016の様子 セッション概要 セッションの解釈(@AutoConfiguration, Starter) 開発時の便利機能の紹介
  7. 7. Spring I/O 2016 開催地:スペイン・バルセロナ セッション数:2日間で48セッション 参加者:26カ国、475人(うち日本からの参加:8人)
  8. 8. Session
  9. 9. AFTER EVENT PARTY
  10. 10. セッションの概要
  11. 11. CUSTOMIZE YOUR SPRING BOOT EXPERIENCE BY WRITING YOUR OWN SPRING BOOT STARTER https://github.com/michael-simons/springio2016 ベースとなるセッション
  12. 12. Custom Spring Boot Starter –part1- Spring Boot Starterには様々な種類がある Integration、Template Engines、Validationなど プロジェクトを作るときは以下のURLから作ると簡単に作れる http://start.spring.io
  13. 13. Custom Spring Boot Starter –part2- 標準的なAutoConfigurationに使用 @ConditionalOnClass @AutoConfigureAfter、@AutoConfigureBefore @Bean
  14. 14. Custom Spring Boot Starter –part3- その他の条件指定・順序決め @ConditionalOnProperty @ConditionalOnMissingBean @Order
  15. 15. セッションの解釈
  16. 16. @SpringBootApplicationって何者?
  17. 17. @SpringBootApplication 3つのアノテーションを1つにまとめたもの @EnableAutoConfiguration 自動設定を有効にする @ComponentScan このクラスのパッケージ配下で@Component, @Service, @Controller,@RestController, @NamedつきのクラスをDIコンテナに登録する @Configuration このクラス自体をBean定義可能にする
  18. 18. @SpringBootApplicationの流れ (@EnableAutoConfigurationのみ)
  19. 19. 1.DIコンテナ(ApplicationContext)作成
  20. 20. 2.BeanFactory作成
  21. 21. 3.spring.factries読込、 BeanDefinition取捨選択、並び替え
  22. 22. 4.Bean登録
  23. 23. さあ、starterを作りましょう!!!
  24. 24. starterがやってくれること アプリケーションの開発に必要な依存関係を追加 ライブラリを使うために必要な設定を追加
  25. 25. ネーミングルール ”spring-boot”ではじまる名前をつけてはいけない!
  26. 26. 社内で作ったライブラリなどを starterにすれば。。。
  27. 27. 面倒な設定なしに使える!!
  28. 28. 突然ですが、 spring.factriesって知ってますか?
  29. 29. spring.factories org.springframework.boot.autoconfigure.EnableAutoConfiguration= com.mycorp.libx.autoconfigure.LibXAutoConfiguration, com.mycorp.libx.autoconfigure.LibXWebAutoConfiguration このように書けば、Spring Bootが@EnableAutoConfigurationの対象と認識してくれ る。 デフォルトのパスは、META-INF/spring.factoriesとなっている。
  30. 30. 作ったstarterを読み込ませたいなら
  31. 31. 作ったstarterのAutoConfigurationのパスを META-INF/spring.factoriesに書けばいい。
  32. 32. というのはわかったけど。。。
  33. 33. 依存関係があるから適用する 順序を指定したい。
  34. 34. 安心してください! 順序指定できますよ!
  35. 35. インポート順序を指定するための アノテーション @Order 引数に指定した順序で優先順位が決まる。最も小さい値が優先度が最も高 い。 @AutoConfigureBefore 指定したauto-configurationクラスより前に適用する。 @AutoConfigureAfter 指定したauto-configurationクラスより後に適用する。
  36. 36. 依存関係にあるクラスの有無で インポートするかどうか指定したい。
  37. 37. 安心してください! 指定できますよ!
  38. 38. Conditionアノテーションを使おう!
  39. 39. Conditonアノテーション @ConditionalOnClass(@ConditionalOnMissingClass)  指定したクラスがクラスパス上にあったら(なかったら)有効 @ConditionalOnBean(@ConditionalOnMissingBean)  指定したBeanがあったら(なかったら)有効 @ConditionalOnProperty  指定したプロパティがあったら有効 @ConditionalOnResource  指定したリソースがあったら有効 @ConditionalOnWebApplication(@ConditionalOnNotWebApplication)  Webアプリケーションであったら(なかったら)有効
  40. 40. デモアプリケーションをみてみよう!!
  41. 41. テンプレートで <banner:show />を指定すれば、 viewでbannerイメージを表示して くれるstarter セッションで行われたデモ
  42. 42. プロジェクトの構成
  43. 43. demoの pom.xml
  44. 44. AutoConfigurationクラス
  45. 45. spring.factories
  46. 46. 開発時の便利機能の紹介
  47. 47. spring-boot-starter-actuator システムの状態やメトリクスを確認できる 主なエンドポイント autoconfig  auto-configurationの候補と自動設定された理由・されなかった理由 beans  DIコンテナに登録されているBeanの一覧 metrics  メトリクス情報が見れる mappings  @RequestMappingのマッピング情報
  48. 48. スピーカー交代

×