Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swagger × Spring Cloud

Swagger × Spring Cloud

Spring Day 2016 Lightning Talk
http://springday2016.springframework.jp

Hidetake Iwata

November 18, 2016
Tweet

More Decks by Hidetake Iwata

Other Decks in Technology

Transcript

  1. Swagger × Spring Cloud
    @int128
    (Hidetake Iwata)

    View Slide

  2. View Slide

  3. Open API Specification / Swagger
    REST APIの仕様をJSONやYAMLで記述できる。
    ツールセットが提供されている。
    ● Swagger Editor(エディタ)
    ● Swagger UI(APIコンソール)
    ● Swagger Codegen(コード自動生成)

    View Slide

  4. Swagger Codegen
    Swagger YAMLからいろんな言語のソースコードを自動生成する
    ツール。JARで提供されている。
    ● Java
    ● Node.js
    ● PHP
    ● などなど
    ※逆に、アノテーションからAPI仕様を生成する方法もある

    View Slide

  5. Swagger Codegen × Spring
    以下のテンプレートを選択できる:
    1. spring-mvc
    ○ APIサーバのControllerとModelが自動生成される
    ○ Spring MVC
    2. spring-cloud
    ○ APIクライアントのClientとModelが自動生成される
    ○ Spring Cloud Feign

    View Slide

  6. 自動生成コードの取り扱い
    自動生成されたコードは変更しない。
    JARに切り出して、ビルドツールで依存関係を張る。
    地獄のパターン:
    ● 自動生成されたコードをいじる(ControllerやModel)
    ● API仕様が変わる
    ● コードに変更を取り込む?

    View Slide

  7. 自動生成コード:
    ● Controllerクラス
    ○ ServiceクラスをDIしてメソッド実行
    ○ テンプレートをカスタマイズ
    ● Modelクラス
    実装コード:
    ● Serviceクラス:ビジネスロジックを実装
    自動生成コードと実装コードをDIで分離

    View Slide

  8. Gradle Swagger Generator Plugin
    Swagger YAMLからソースコードやドキュメントを生成
    https://github.com/int128/gradle-swagger-generator-plugin

    View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. Thank you

    View Slide

  13. 2002年
    2003年
    2004年
    2005年
    Spring 1.0がリリースされたのはいつ?

    View Slide