spring starterによるspring boot starter

49
Boot starter ががが Spring boot ががが & Spring 5 ががが Reactive がががが ががががががががが 株株株株株株株株株株株

Upload: ryosuke-uchitate

Post on 14-Apr-2017

860 views

Category:

Engineering


10 download

TRANSCRIPT

Page 1: Spring starterによるSpring Boot Starter

Boot starterが語る Spring bootの仕組み

&Spring 5以降の Reactiveな流れと

フロントまわりの話

株式会社タグバンガーズ

Page 2: Spring starterによるSpring Boot Starter

横浜・設立 6年目・Webアプリ開発・ほぼ Spring案件

Page 3: Spring starterによるSpring Boot Starter

TAG BAR月1ぐらい開催してる社外の方を招いて行う勉強会connpass(http://tagbar.connpass.com/)にて募集

Page 4: Spring starterによるSpring Boot Starter

軽く自己紹介

佐々木 亜里沙(ささき ありさ)UIチーム・プロダクトチーム北海道

内立 良介(うちたて りょうすけ)デベロップメントチーム宮崎

Page 5: Spring starterによるSpring Boot Starter

Spring starterによるSpring Boot Starter

株式会社タグバンガーズ 内立良介

Page 6: Spring starterによるSpring Boot Starter

AGENDASpring I/O 2016の様子セッション概要セッションの解釈(@AutoConfiguration, Starter)開発時の便利機能の紹介

Page 7: Spring starterによるSpring Boot Starter

Spring I/O 2016開催地:スペイン・バルセロナセッション数:2日間で48セッション参加者:26カ国、475人(うち日本からの参加:8人)

Page 8: Spring starterによるSpring Boot Starter

Session

Page 9: Spring starterによるSpring Boot Starter

AFTER EVENT PARTY

Page 10: Spring starterによるSpring Boot Starter

セッションの概要

Page 11: Spring starterによるSpring Boot Starter

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

Custom Spring Boot Starter –part1-Spring Boot Starterには様々な種類がある

Integration、 Template Engines、 Validationなどプロジェクトを作るときは以下の URLから作ると簡単に作れる

http://start.spring.io

Page 13: Spring starterによるSpring Boot Starter
Page 14: Spring starterによるSpring Boot Starter

Custom Spring Boot Starter –part2-標準的な AutoConfigurationに使用@ConditionalOnClass@AutoConfigureAfter、@AutoConfigureBefore@Bean

Page 15: Spring starterによるSpring Boot Starter

Custom Spring Boot Starter –part3-その他の条件指定・順序決め

@ConditionalOnProperty@ConditionalOnMissingBean@Order

Page 16: Spring starterによるSpring Boot Starter

セッションの解釈

Page 17: Spring starterによるSpring Boot Starter

@SpringBootApplicationって何者?

Page 18: Spring starterによるSpring Boot Starter

@SpringBootApplication3つのアノテーションを1つにまとめたもの@EnableAutoConfiguration

自動設定を有効にする@ComponentScan

このクラスのパッケージ配下で@Component, @Service, @Controller,@RestController, @Namedつきのクラスを DIコンテナに登録する

@Configurationこのクラス自体を Bean定義可能にする

Page 19: Spring starterによるSpring Boot Starter

@SpringBootApplicationの流れ(@EnableAutoConfigurationのみ)

Page 20: Spring starterによるSpring Boot Starter

1.DIコンテナ(ApplicationContext)作成

Page 21: Spring starterによるSpring Boot Starter

2.BeanFactory作成

Page 22: Spring starterによるSpring Boot Starter

3.spring.factries読込、BeanDefinition取捨選択、並び替え

Page 23: Spring starterによるSpring Boot Starter

4.Bean登録

Page 24: Spring starterによるSpring Boot Starter

さあ、 starterを作りましょう!!!

Page 25: Spring starterによるSpring Boot Starter

starterがやってくれることアプリケーションの開発に必要な依存関係を追加ライブラリを使うために必要な設定を追加

Page 26: Spring starterによるSpring Boot Starter

ネーミングルール

”spring-boot”ではじまる名前をつけてはいけない!

Page 27: Spring starterによるSpring Boot Starter

社内で作ったライブラリなどをstarterにすれば。。。

Page 28: Spring starterによるSpring Boot Starter

面倒な設定なしに使える!!

Page 29: Spring starterによるSpring Boot Starter

突然ですが、spring.factriesって知ってますか?

Page 30: Spring starterによるSpring Boot Starter

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

作った starterを読み込ませたいなら

Page 32: Spring starterによるSpring Boot Starter

作った starterのAutoConfigurationのパスをMETA-INF/spring.factoriesに書けばいい。

Page 33: Spring starterによるSpring Boot Starter

というのはわかったけど。。。

Page 34: Spring starterによるSpring Boot Starter

依存関係があるから適用する順序を指定したい。

Page 35: Spring starterによるSpring Boot Starter

安心してください!順序指定できますよ!

Page 36: Spring starterによるSpring Boot Starter

インポート順序を指定するためのアノテーション@Order

引数に指定した順序で優先順位が決まる。最も小さい値が優先度が最も高い。

@AutoConfigureBefore指定した auto-configurationクラスより前に適用する。

@AutoConfigureAfter指定した auto-configurationクラスより後に適用する。

Page 37: Spring starterによるSpring Boot Starter

依存関係にあるクラスの有無でインポートするかどうか指定したい。

Page 38: Spring starterによるSpring Boot Starter

安心してください!指定できますよ!

Page 39: Spring starterによるSpring Boot Starter

Conditionアノテーションを使おう!

Page 40: Spring starterによるSpring Boot Starter

Conditonアノテーション@ConditionalOnClass(@ConditionalOnMissingClass)

指定したクラスがクラスパス上にあったら (なかったら )有効@ConditionalOnBean(@ConditionalOnMissingBean)

指定した Beanがあったら (なかったら )有効@ConditionalOnProperty

指定したプロパティがあったら有効

@ConditionalOnResource指定したリソースがあったら有効

@ConditionalOnWebApplication(@ConditionalOnNotWebApplication)

Webアプリケーションであったら (なかったら )有効

Page 41: Spring starterによるSpring Boot Starter

デモアプリケーションをみてみよう!!

Page 42: Spring starterによるSpring Boot Starter

テンプレートで<banner:show />を指定すれば、viewで bannerイメージを表示してくれる starter

セッションで行われたデモ

Page 43: Spring starterによるSpring Boot Starter

プロジェクトの構成

Page 44: Spring starterによるSpring Boot Starter

demoのpom.xml

Page 45: Spring starterによるSpring Boot Starter

AutoConfigurationクラス

Page 46: Spring starterによるSpring Boot Starter

spring.factories

Page 47: Spring starterによるSpring Boot Starter

開発時の便利機能の紹介

Page 48: Spring starterによるSpring Boot Starter

spring-boot-starter-actuatorシステムの状態やメトリクスを確認できる主なエンドポイント

autoconfigauto-configurationの候補と自動設定された理由・されなかった理由

beansDIコンテナに登録されている Beanの一覧

metricsメトリクス情報が見れる

mappings@RequestMappingのマッピング情報

Page 49: Spring starterによるSpring Boot Starter

スピーカー交代