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