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

スピーカー交代