© 2019 NTT DATA Corporation
2019/11/15 日本Springユーザ会主催 Spring One 2019報告会
株式会社NTTデータ システム技術本部 齊加匠
Spring Initializrをハックする
-カスタマイズを通してその内部実装を覗く
© 2019 NTT DATA Corporation 2
{
“name”: {
“ja”: “齊加匠”,
”en”: “SAIKA TAKUMI”,
},
“company”: “NTTDATA”,
“favorites”: [“Arch Linux”, “Golang”, “Neovim”],
“github”: “takumi34”,
“twitter”: “@Untergrund_idol”,
“blog”: “takumi34.github.io”,
}
自己紹介
© 2019 NTT DATA Corporation 3
現地での写真
NTTデータの出展ブース
© 2019 NTT DATA Corporation 4
話すこと
Spring Initializrの
カスタマイズについて
© 2019 NTT DATA Corporation 5
「Creating “The Second Best Place on the Internet”
with Spring Initializr」
Stéphane Nicoll
https://content.pivotal.io/slides/creating-the-second-best-place-on-the-internet-
with-spring-initializr
https://github.com/snicoll/demo-custom-initializr
聴講したセッション
© 2019 NTT DATA Corporation 6
1.軽い紹介
2.歴史
3.カスタマイズ
もくじ
© 2019 NTT DATA Corportion 7
第一部
© 2019 NTT DATA Corporation 8
Spring Initializr
© 2019 NTT DATA Corporation 9
Web, IDE, CLIなどのクライアントから
Spring Bootのプロジェクトを
生成できるツール
Spring Initializr
© 2019 NTT DATA Corporation 10
WEB UI
https://start.spring.io/
© 2019 NTT DATA Corporation 11
start.spring.io
https://github.com/spring-io/start.spring.io
© 2019 NTT DATA Corporation 12
Initializr
https://github.com/spring-io/initializr
© 2019 NTT DATA Corporation 13
Spring Initializr
の軽い説明
© 2019 NTT DATA Corporation 14
例
© 2019 NTT DATA Corporation 17
Webだと
© 2019 NTT DATA Corporation 18
https://start.spring.io/
© 2019 NTT DATA Corporation 19
コマンドライン
でも出来る
© 2019 NTT DATA Corporation 20
➜ curl https://start.spring.io/starter.tgz -d dependencies=web | tar -xzvf –
➜ tree
.
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
14 directories, 7 files
Curlだと
© 2019 NTT DATA Corporation 23
IDEでも出来る
© 2019 NTT DATA Corporation 24
IntelliJ IDEA Ultimateだと
© 2019 NTT DATA Corporation 25
ちなみに
Spring Boot CLIでも
© 2019 NTT DATA Corporation 27
ここまでは
ちょっとした紹介
© 2019 NTT DATA Corportion 28
第二部
© 2019 NTT DATA Corporation 29
歴史
© 2019 NTT DATA Corporation 30
2013誕生
© 2019 NTT DATA Corporation 33
Initializr
e
© 2019 NTT DATA Corporation 34
Initializr
© 2019 NTT DATA Corporation 36
最初は簡単なgroovy script
https://content.pivotal.io/slides/creating-the-second-best-place-on-the-internet-with-spring-initializr
© 2019 NTT DATA Corporation 37
• Terminal Support
– Spring Boot CLI (March 2014)
– CURL, HTTP (Jan 2015)
• IDE
– STS, IntelliJ IDEA (March 2015)
– Netbeans (May 2016)
– VSCode (Jan 2018)
Supportの広がり
© 2019 NTT DATA Corporation 41
Spring Initializr
の凄さ
© 2019 NTT DATA Corporation 42
Spring Bootの
エコシステムを
形成
© 2019 NTT DATA Corporation 43
一か月で世界で
1M以上の
ダウンロード
© 2019 NTT DATA Corporation 44
すごい!
© 2019 NTT DATA Corportion 50
第三部
© 2019 NTT DATA Corporation 51
カスタマイズの
話
© 2019 NTT DATA Corporation 52
そもそもカスタマイズし
て何がうれしい?
© 2019 NTT DATA Corporation 53
例えば
こんなことが出来る
© 2019 NTT DATA Corporation 54
• UIの変更
• パッケージのオプションの変更
• デフォルトの依存関係の変更
• 3rd partyの依存関係の追加
• .gitignoreの変更やREADMEの追加
など
カスタマイズの例
© 2019 NTT DATA Corporation 56
実際に
カスタマイズして
いる事例
© 2019 NTT DATA Corporation 57
https://github.com/ssherwood/presentations/blob/master/springone-2016/easy-
microservices/initializr-guide.adoc
↑内容はちょっと古い
https://www.slideshare.net/SpringCentral/easy-consumption-of-microservices
Spring One 2016の発表
© 2019 NTT DATA Corporation 59
まずはInitializr
の中身見てみる
© 2019 NTT DATA Corporation 60
https://github.com/spring-io/initializr
© 2019 NTT DATA Corporation 64
旧 新(2019年2月から)
https://spring.io/blog/2019/02/20/what-s-new-with-spring-initializr
© 2019 NTT DATA Corporation 65
複雑になってる
© 2019 NTT DATA Corporation 66
なんで?
© 2019 NTT DATA Corporation 67
時は2017年に遡る
https://github.com/spring-io/initializr/issues/340
© 2019 NTT DATA Corporation 68
今までもInitializrをカスタマイズす
ることは可能だった
© 2019 NTT DATA Corporation 69
しかし、libraryをforkして変更しな
ければならなかった
© 2019 NTT DATA Corporation 71
2019年10月に
Spring Initializr 0.8.0がリリースされた
© 2019 NTT DATA Corporation 72
Spring Initializr 0.8 brings a complete rewrite of the project
generation API with dedicated abstractions for common assets of
JVM-based projects.
(中略)
This should make the creation of a custom instance easier than
ever!
Spring Initializr 0.8.0リリースの目玉
https://spring.io/blog/2019/10/14/spring-initializr-0-8-0-available-now
© 2019 NTT DATA Corporation 74
• BuildCustomizer to add dependencies, plugins
or other configuration items
• ProjectContributor, a high-level hook-point to
add assets to a directory structure
https://spring.io/blog/2019/02/20/what-s-new-with-spring-initializr
新たに追加されたAPI
© 2019 NTT DATA Corporation 77
これがあると何
がうれしい?
© 2019 NTT DATA Corporation 78
実際に自分
で使ってカスタ
マイズしてみた
© 2019 NTT DATA Corporation 79
セッションとは
違うカスタマイ
ズ
© 2019 NTT DATA Corporation 80
まずは
依存関係に追記
© 2019 NTT DATA Corporation 82
dependencies {
implementation ("org.springframework.boot:spring-boot-starter-web“)
implementation("io.spring.initializr:initializr-web")
implementation("io.spring.initializr:initializr-generator-spring")
}
dependencyManagement {
imports {
mavenBom "io.spring.initializr:initializr-bom:0.8.0.RELEASE"
}
}
build.gradle
© 2019 NTT DATA Corporation 83
dependencies {
implementation ("org.springframework.boot:spring-boot-starter-web“)
implementation("io.spring.initializr:initializr-web")
implementation("io.spring.initializr:initializr-generator-spring")
}
dependencyManagement {
imports {
mavenBom "io.spring.initializr:initializr-bom:0.8.0.RELEASE"
}
}
build.gradle
BOM(a Bill of Materials)
© 2019 NTT DATA Corporation 85
これでlocalhost:8080ア
クセスすると
© 2019 NTT DATA Corporation 86
jsonが出る
© 2019 NTT DATA Corporation 88
IntelliJ IDEAなどでlocalhost:8080にアクセスするとやりやすい
© 2019 NTT DATA Corporation 89
次は
BuildCustomizer
ProjectContributer
を使ってみる
© 2019 NTT DATA Corporation 90
io.spring.initializr.generator.project.ProjectGenerationConfiguration=\
com.chika.custominitializr.contributer.SampleProjectGenerationConfiguration
spring.factoriesにパス記載
© 2019 NTT DATA Corporation 91
io.spring.initializr.generator.project.ProjectGenerationConfiguration=\
com.chika.custominitializr.contributer.SampleProjectGenerationConfiguration
spring.factoriesにパス記載
自動でコンポーネントスキャンされるわけじゃないの
で、spring.factoriesで登録する必要あり
© 2019 NTT DATA Corporation 92
@ProjectGenerationConfiguration
public class SampleProjectGenerationConfiguration {
@Bean
public BannerContributor bannerContributor() {
return new BannerContributor();
}
@Bean
public BuildCustomizer<MavenBuild> devtoolsContributor () {
return (build) -> build.dependencies().add("devtools",
"org.springframework.boot","spring-boot-devtools", DependencyScope.COMPILE);
}
}
デフォルトの依存関係をカスタマイズ
© 2019 NTT DATA Corporation 93
@ProjectGenerationConfiguration
public class SampleProjectGenerationConfiguration {
@Bean
public BannerContributor bannerContributor() {
return new BannerContributor();
}
@Bean
public BuildCustomizer<MavenBuild> devtoolsContributor () {
return (build) -> build.dependencies().add("devtools",
"org.springframework.boot","spring-boot-devtools", DependencyScope.COMPILE);
}
}
デフォルトの依存関係をカスタマイズ
このアノテーション
© 2019 NTT DATA Corporation 94
@ProjectGenerationConfiguration
public class SampleProjectGenerationConfiguration {
@Bean
public BannerContributor bannerContributor() {
return new BannerContributor();
}
@Bean
public BuildCustomizer<MavenBuild> devtoolsContributor () {
return (build) -> build.dependencies().add("devtools",
"org.springframework.boot","spring-boot-devtools", DependencyScope.COMPILE);
}
}
デフォルトの依存関係をカスタマイズ
このアノテーション
依存関係に
devtoolsを追加
© 2019 NTT DATA Corporation 95
実際に
プロジェクトを
生成すると
© 2019 NTT DATA Corporation 96
pom.xmlが変更されている
© 2019 NTT DATA Corporation 97
起動バナーをカスタマイズ
public class BannerContributor implements ProjectContributor {
public void contribute(Path projectRoot) throws IOException {
Path bannerDirectory = projectRoot
.resolve("src/main/resources");
Files.createDirectories(bannerDirectory);
Path file =Files.createFile(bannerDirectory.resolve("banner.txt"));
try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(file))) {
writer.println(
" _____ _ _ _ ¥n" +
" / ____| | | (_) | | ¥n" +
" | | | |__ _ | | __ __ _ ¥n" +
" | | | '_ ¥¥ | | | |/ / / _` |¥n" +
" | |____ | | | | | | | < | (_| |¥n" +
" ¥¥_____| |_| |_| |_| |_|¥¥_¥¥ ¥¥__,_|¥n"
);
}
}
}
© 2019 NTT DATA Corporation 98
実際に
プロジェクトを
生成すると
© 2019 NTT DATA Corporation 99
起動バナーが変更されている
© 2019 NTT DATA Corporation 101
他にも
© 2019 NTT DATA Corporation 103
例えばapplication.ymlに
こう書くと
© 2019 NTT DATA Corporation 104
initializr:
dependencies:
- name: Web
content:
- name: Web
id: web
description: webだよ!!!
types:
- name: Maven Project
id: maven-project
description: mvn
tags:
build: maven
format: project
default: true
action: /starter.zip
application.yml
packagings:
- name: Jar
id: jar
default: true
javaVersions:
- id: 11
default: true
languages:
- name: Java
id: java
default: true
- name: Kotlin
id: kotlin
default: false
group-id:
value: org.chika
© 2019 NTT DATA Corporation 105
initializr:
dependencies:
- name: Web
content:
- name: Web
id: web
description: webだよ!!!
types:
- name: Maven Project
id: maven-project
description: mvn
tags:
build: maven
format: project
default: true
action: /starter.zip
application.yml
packagings:
- name: Jar
id: jar
default: true
javaVersions:
- id: 11
default: true
languages:
- name: Java
id: java
default: true
- name: Kotlin
id: kotlin
default: false
group-id:
value: org.chika
Descriptio
nを変更
Defaultも
変えられる
initializrの
namespace
で指定
chika
になってる
© 2019 NTT DATA Corporation 106
STSでプロジェクトを生成しようとすると
© 2019 NTT DATA Corporation 107
STSでプロジェクトを生成しようとすると
Discriptionが
変更されてる
© 2019 NTT DATA Corporation 113
とりあえず
やってみたい方
© 2019 NTT DATA Corporation 115
https://github.com/spring-io/initializr/tree/master/initializr-service-sample
© 2019 NTT DATA Corporation 116
簡単に試せる
© 2019 NTT DATA Corporation 118
Spring Initializr凄い!
まとめ
© 2019 NTT DATA Corporation 119
カスタマイズやってみよ
う!
まとめ
© 2019 NTT DATA Corporation 120
https://github.com/takumi34/custom-spring-initializr
今回使ったコードはここに格納しています
© 2019 NTT DATA Corporation

Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く

  • 1.
    © 2019 NTTDATA Corporation 2019/11/15 日本Springユーザ会主催 Spring One 2019報告会 株式会社NTTデータ システム技術本部 齊加匠 Spring Initializrをハックする -カスタマイズを通してその内部実装を覗く
  • 2.
    © 2019 NTTDATA Corporation 2 { “name”: { “ja”: “齊加匠”, ”en”: “SAIKA TAKUMI”, }, “company”: “NTTDATA”, “favorites”: [“Arch Linux”, “Golang”, “Neovim”], “github”: “takumi34”, “twitter”: “@Untergrund_idol”, “blog”: “takumi34.github.io”, } 自己紹介
  • 3.
    © 2019 NTTDATA Corporation 3 現地での写真 NTTデータの出展ブース
  • 4.
    © 2019 NTTDATA Corporation 4 話すこと Spring Initializrの カスタマイズについて
  • 5.
    © 2019 NTTDATA Corporation 5 「Creating “The Second Best Place on the Internet” with Spring Initializr」 Stéphane Nicoll https://content.pivotal.io/slides/creating-the-second-best-place-on-the-internet- with-spring-initializr https://github.com/snicoll/demo-custom-initializr 聴講したセッション
  • 6.
    © 2019 NTTDATA Corporation 6 1.軽い紹介 2.歴史 3.カスタマイズ もくじ
  • 7.
    © 2019 NTTDATA Corportion 7 第一部
  • 8.
    © 2019 NTTDATA Corporation 8 Spring Initializr
  • 9.
    © 2019 NTTDATA Corporation 9 Web, IDE, CLIなどのクライアントから Spring Bootのプロジェクトを 生成できるツール Spring Initializr
  • 10.
    © 2019 NTTDATA Corporation 10 WEB UI https://start.spring.io/
  • 11.
    © 2019 NTTDATA Corporation 11 start.spring.io https://github.com/spring-io/start.spring.io
  • 12.
    © 2019 NTTDATA Corporation 12 Initializr https://github.com/spring-io/initializr
  • 13.
    © 2019 NTTDATA Corporation 13 Spring Initializr の軽い説明
  • 14.
    © 2019 NTTDATA Corporation 14 例
  • 15.
    © 2019 NTTDATA Corporation 17 Webだと
  • 16.
    © 2019 NTTDATA Corporation 18 https://start.spring.io/
  • 17.
    © 2019 NTTDATA Corporation 19 コマンドライン でも出来る
  • 18.
    © 2019 NTTDATA Corporation 20 ➜ curl https://start.spring.io/starter.tgz -d dependencies=web | tar -xzvf – ➜ tree . ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── example │ │ └── demo │ │ └── DemoApplication.java │ └── resources │ ├── application.properties │ ├── static │ └── templates └── test └── java └── com └── example └── demo └── DemoApplicationTests.java 14 directories, 7 files Curlだと
  • 19.
    © 2019 NTTDATA Corporation 23 IDEでも出来る
  • 20.
    © 2019 NTTDATA Corporation 24 IntelliJ IDEA Ultimateだと
  • 21.
    © 2019 NTTDATA Corporation 25 ちなみに Spring Boot CLIでも
  • 22.
    © 2019 NTTDATA Corporation 27 ここまでは ちょっとした紹介
  • 23.
    © 2019 NTTDATA Corportion 28 第二部
  • 24.
    © 2019 NTTDATA Corporation 29 歴史
  • 25.
    © 2019 NTTDATA Corporation 30 2013誕生
  • 26.
    © 2019 NTTDATA Corporation 33 Initializr e
  • 27.
    © 2019 NTTDATA Corporation 34 Initializr
  • 28.
    © 2019 NTTDATA Corporation 36 最初は簡単なgroovy script https://content.pivotal.io/slides/creating-the-second-best-place-on-the-internet-with-spring-initializr
  • 29.
    © 2019 NTTDATA Corporation 37 • Terminal Support – Spring Boot CLI (March 2014) – CURL, HTTP (Jan 2015) • IDE – STS, IntelliJ IDEA (March 2015) – Netbeans (May 2016) – VSCode (Jan 2018) Supportの広がり
  • 30.
    © 2019 NTTDATA Corporation 41 Spring Initializr の凄さ
  • 31.
    © 2019 NTTDATA Corporation 42 Spring Bootの エコシステムを 形成
  • 32.
    © 2019 NTTDATA Corporation 43 一か月で世界で 1M以上の ダウンロード
  • 33.
    © 2019 NTTDATA Corporation 44 すごい!
  • 34.
    © 2019 NTTDATA Corportion 50 第三部
  • 35.
    © 2019 NTTDATA Corporation 51 カスタマイズの 話
  • 36.
    © 2019 NTTDATA Corporation 52 そもそもカスタマイズし て何がうれしい?
  • 37.
    © 2019 NTTDATA Corporation 53 例えば こんなことが出来る
  • 38.
    © 2019 NTTDATA Corporation 54 • UIの変更 • パッケージのオプションの変更 • デフォルトの依存関係の変更 • 3rd partyの依存関係の追加 • .gitignoreの変更やREADMEの追加 など カスタマイズの例
  • 39.
    © 2019 NTTDATA Corporation 56 実際に カスタマイズして いる事例
  • 40.
    © 2019 NTTDATA Corporation 57 https://github.com/ssherwood/presentations/blob/master/springone-2016/easy- microservices/initializr-guide.adoc ↑内容はちょっと古い https://www.slideshare.net/SpringCentral/easy-consumption-of-microservices Spring One 2016の発表
  • 41.
    © 2019 NTTDATA Corporation 59 まずはInitializr の中身見てみる
  • 42.
    © 2019 NTTDATA Corporation 60 https://github.com/spring-io/initializr
  • 43.
    © 2019 NTTDATA Corporation 64 旧 新(2019年2月から) https://spring.io/blog/2019/02/20/what-s-new-with-spring-initializr
  • 44.
    © 2019 NTTDATA Corporation 65 複雑になってる
  • 45.
    © 2019 NTTDATA Corporation 66 なんで?
  • 46.
    © 2019 NTTDATA Corporation 67 時は2017年に遡る https://github.com/spring-io/initializr/issues/340
  • 47.
    © 2019 NTTDATA Corporation 68 今までもInitializrをカスタマイズす ることは可能だった
  • 48.
    © 2019 NTTDATA Corporation 69 しかし、libraryをforkして変更しな ければならなかった
  • 49.
    © 2019 NTTDATA Corporation 71 2019年10月に Spring Initializr 0.8.0がリリースされた
  • 50.
    © 2019 NTTDATA Corporation 72 Spring Initializr 0.8 brings a complete rewrite of the project generation API with dedicated abstractions for common assets of JVM-based projects. (中略) This should make the creation of a custom instance easier than ever! Spring Initializr 0.8.0リリースの目玉 https://spring.io/blog/2019/10/14/spring-initializr-0-8-0-available-now
  • 51.
    © 2019 NTTDATA Corporation 74 • BuildCustomizer to add dependencies, plugins or other configuration items • ProjectContributor, a high-level hook-point to add assets to a directory structure https://spring.io/blog/2019/02/20/what-s-new-with-spring-initializr 新たに追加されたAPI
  • 52.
    © 2019 NTTDATA Corporation 77 これがあると何 がうれしい?
  • 53.
    © 2019 NTTDATA Corporation 78 実際に自分 で使ってカスタ マイズしてみた
  • 54.
    © 2019 NTTDATA Corporation 79 セッションとは 違うカスタマイ ズ
  • 55.
    © 2019 NTTDATA Corporation 80 まずは 依存関係に追記
  • 56.
    © 2019 NTTDATA Corporation 82 dependencies { implementation ("org.springframework.boot:spring-boot-starter-web“) implementation("io.spring.initializr:initializr-web") implementation("io.spring.initializr:initializr-generator-spring") } dependencyManagement { imports { mavenBom "io.spring.initializr:initializr-bom:0.8.0.RELEASE" } } build.gradle
  • 57.
    © 2019 NTTDATA Corporation 83 dependencies { implementation ("org.springframework.boot:spring-boot-starter-web“) implementation("io.spring.initializr:initializr-web") implementation("io.spring.initializr:initializr-generator-spring") } dependencyManagement { imports { mavenBom "io.spring.initializr:initializr-bom:0.8.0.RELEASE" } } build.gradle BOM(a Bill of Materials)
  • 58.
    © 2019 NTTDATA Corporation 85 これでlocalhost:8080ア クセスすると
  • 59.
    © 2019 NTTDATA Corporation 86 jsonが出る
  • 60.
    © 2019 NTTDATA Corporation 88 IntelliJ IDEAなどでlocalhost:8080にアクセスするとやりやすい
  • 61.
    © 2019 NTTDATA Corporation 89 次は BuildCustomizer ProjectContributer を使ってみる
  • 62.
    © 2019 NTTDATA Corporation 90 io.spring.initializr.generator.project.ProjectGenerationConfiguration=\ com.chika.custominitializr.contributer.SampleProjectGenerationConfiguration spring.factoriesにパス記載
  • 63.
    © 2019 NTTDATA Corporation 91 io.spring.initializr.generator.project.ProjectGenerationConfiguration=\ com.chika.custominitializr.contributer.SampleProjectGenerationConfiguration spring.factoriesにパス記載 自動でコンポーネントスキャンされるわけじゃないの で、spring.factoriesで登録する必要あり
  • 64.
    © 2019 NTTDATA Corporation 92 @ProjectGenerationConfiguration public class SampleProjectGenerationConfiguration { @Bean public BannerContributor bannerContributor() { return new BannerContributor(); } @Bean public BuildCustomizer<MavenBuild> devtoolsContributor () { return (build) -> build.dependencies().add("devtools", "org.springframework.boot","spring-boot-devtools", DependencyScope.COMPILE); } } デフォルトの依存関係をカスタマイズ
  • 65.
    © 2019 NTTDATA Corporation 93 @ProjectGenerationConfiguration public class SampleProjectGenerationConfiguration { @Bean public BannerContributor bannerContributor() { return new BannerContributor(); } @Bean public BuildCustomizer<MavenBuild> devtoolsContributor () { return (build) -> build.dependencies().add("devtools", "org.springframework.boot","spring-boot-devtools", DependencyScope.COMPILE); } } デフォルトの依存関係をカスタマイズ このアノテーション
  • 66.
    © 2019 NTTDATA Corporation 94 @ProjectGenerationConfiguration public class SampleProjectGenerationConfiguration { @Bean public BannerContributor bannerContributor() { return new BannerContributor(); } @Bean public BuildCustomizer<MavenBuild> devtoolsContributor () { return (build) -> build.dependencies().add("devtools", "org.springframework.boot","spring-boot-devtools", DependencyScope.COMPILE); } } デフォルトの依存関係をカスタマイズ このアノテーション 依存関係に devtoolsを追加
  • 67.
    © 2019 NTTDATA Corporation 95 実際に プロジェクトを 生成すると
  • 68.
    © 2019 NTTDATA Corporation 96 pom.xmlが変更されている
  • 69.
    © 2019 NTTDATA Corporation 97 起動バナーをカスタマイズ public class BannerContributor implements ProjectContributor { public void contribute(Path projectRoot) throws IOException { Path bannerDirectory = projectRoot .resolve("src/main/resources"); Files.createDirectories(bannerDirectory); Path file =Files.createFile(bannerDirectory.resolve("banner.txt")); try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(file))) { writer.println( " _____ _ _ _ ¥n" + " / ____| | | (_) | | ¥n" + " | | | |__ _ | | __ __ _ ¥n" + " | | | '_ ¥¥ | | | |/ / / _` |¥n" + " | |____ | | | | | | | < | (_| |¥n" + " ¥¥_____| |_| |_| |_| |_|¥¥_¥¥ ¥¥__,_|¥n" ); } } }
  • 70.
    © 2019 NTTDATA Corporation 98 実際に プロジェクトを 生成すると
  • 71.
    © 2019 NTTDATA Corporation 99 起動バナーが変更されている
  • 72.
    © 2019 NTTDATA Corporation 101 他にも
  • 73.
    © 2019 NTTDATA Corporation 103 例えばapplication.ymlに こう書くと
  • 74.
    © 2019 NTTDATA Corporation 104 initializr: dependencies: - name: Web content: - name: Web id: web description: webだよ!!! types: - name: Maven Project id: maven-project description: mvn tags: build: maven format: project default: true action: /starter.zip application.yml packagings: - name: Jar id: jar default: true javaVersions: - id: 11 default: true languages: - name: Java id: java default: true - name: Kotlin id: kotlin default: false group-id: value: org.chika
  • 75.
    © 2019 NTTDATA Corporation 105 initializr: dependencies: - name: Web content: - name: Web id: web description: webだよ!!! types: - name: Maven Project id: maven-project description: mvn tags: build: maven format: project default: true action: /starter.zip application.yml packagings: - name: Jar id: jar default: true javaVersions: - id: 11 default: true languages: - name: Java id: java default: true - name: Kotlin id: kotlin default: false group-id: value: org.chika Descriptio nを変更 Defaultも 変えられる initializrの namespace で指定 chika になってる
  • 76.
    © 2019 NTTDATA Corporation 106 STSでプロジェクトを生成しようとすると
  • 77.
    © 2019 NTTDATA Corporation 107 STSでプロジェクトを生成しようとすると Discriptionが 変更されてる
  • 78.
    © 2019 NTTDATA Corporation 113 とりあえず やってみたい方
  • 79.
    © 2019 NTTDATA Corporation 115 https://github.com/spring-io/initializr/tree/master/initializr-service-sample
  • 80.
    © 2019 NTTDATA Corporation 116 簡単に試せる
  • 81.
    © 2019 NTTDATA Corporation 118 Spring Initializr凄い! まとめ
  • 82.
    © 2019 NTTDATA Corporation 119 カスタマイズやってみよ う! まとめ
  • 83.
    © 2019 NTTDATA Corporation 120 https://github.com/takumi34/custom-spring-initializr 今回使ったコードはここに格納しています
  • 84.
    © 2019 NTTDATA Corporation