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