更新履歴
日付 | 内容 |
---|---|
2018.01.29 | Spring Boot 2.0 M7 にて作成 |
2018.02.10 | Spring Boot 2.0 RC1 にて作成 |
2018.02.25 | Spring Boot 2.0 RC2 にて作成 |
2018.03.01 | Spring Boot 2.0 GA にて作成 |
2018.05.12 | Spring Boot 2.02 にて作成 |
2018.06.30 | Spring Boot 2.03 にて作成 |
はじめに
既存アプリのSpringBoot 1.5 -> 2.0化に失敗したので、
ひとまず新規でWebApiを作成することにしました。
課題は山積みですが、いったんは表題の組み合わせで動作しております。
Java9化を進めたいかたには参考になるかと思います。
※Java9化の鍵はbuild.gradleに集約されております。
- FW
Spring Boot 2.0 M7Spring Boot 2.0 RC1Spring Boot 2.0 RC2Spring Boot 2.0 GASpring Boot 2.02- Spring Boot 2.03
- Libraries
- Flyway
- Lombok
- SpringDataJpa
- SpringFox
- JDK
- 9.0.4(Oracle)
- Build
Gradle 4.5.1Gradle 4.6Gradle 4.7- Gradle 4.8.1
- IDE
IntelliJ IDEA Community 2017.3- IntelliJ IDEA Community 2018.1
乗り越えていない課題
modelmapper
skipしたいけどうまく動かない。。。
module-info.java
作成していません。
なので起動引数に今後削除予定のものを記載しています。
SpringFox DataRest
2.9で動かない。。。
メタモデルクラス
IntelliJでの設定方法わからず断念しました。(java9とは関係ない)
つまづいた箇所
Actuator
yamlで定義するプロパティ値がかなり変更されているようです。
以前出力していた内容がどれに対応しているか把握しきれていません。
javadoc
build.gradleのサンプルがみつからず、1時間ほどかかりました。
tasks.withType(Javadoc) {
doFirst {
options.addStringOption('-add-modules', 'java.xml.bind,java.xml.ws.annotation')
}
}
※ "module-info.java"作成したらこの箇所は変更する気が
JAXB
Spring Boot with Java 9に記載あるように、dependencyに追加すればよいです。
ですが、issuesに上がっているので手で書かなくもよくなるかも?
Provide dependency management for JAXB as it's not provided with Java9 anymore
compile("javax.xml.bind:jaxb-api:2.3.0")
junit5化
ライブラリのversionを4.x -> 5.xにするのかと思ってましたが違うようですね。
// Junit 5
testCompile("org.junit.platform:junit-platform-launcher:1.1.1")
testRuntimeOnly("org.junit.platform:junit-platform-engine:1.1.1")
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
lombok
~~1.16.18 -> 1.16.20 に変更したらあっさり解消しました。
ただ、着手開始時には1.16.20はリリースされていませんでしたので、解消されない時間が存在しています。
Spring Boot 2.0 RC1のdependency-managementにより、
lombokはデフォルトで1.16.20を取得するようになりました。
なので依存関係のバージョンをbuild.gradleに手入力せずともjava9化できるようになりました。
Optional
nullでない時に例外投げたい。。。
下記記載方法はダサい。
Optional<GoodsTbl> optionalCode = service.findByCode(goodsCode);
if (optionalCode.isPresent()) {// goodsCode(unique制約)の存在チェック
throw new ConflictException("goodsCode", "CODEが重複しています。");
}
O/R Mapper
flyway、mysql5.7、SpringDataJPAの組み合わせで起動中に大量の警告が出ていました。
現在は警告消しているので、どこかの記述が誤っている可能性がかなり有ります。
時間のある時に調査したいです。
// Flyway
compile("org.flywaydb:flyway-core")
testCompile("org.flywaydb.flyway-test-extensions:flyway-spring-test:5.0.0")
今後の取り組み
- CRUDの残りの機能の作成
- リファクタリング
- 続)SpringBoot 2.x対応
- Testの追加
- Productの追加