表題の通り、 Functional Spring Hands On に行ってきた。
ハンズオンの資料はこれ
基本的に手を動かさないと理解が遅いので、わりとハンズオンは好きです(用意する方は大変)
内容は、 Spring(WebFlux) アプリケーションを @SpringBootApplication
なしで記述するというもの。さらに R2DBC もついてた。
R2DBC はまだ開発が進んでいる最中で、以前のエントリーは完全に無意味になってた…
ハンズオンは maven ベースで行われていたが、 gradle でやった。そのために、途中で依存ライブラリーがわからなくなり、ついていけなくなってしまった…
なお、この build.gradle
なら、ハンズオンの内容を実施できる(成果)
plugins { id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { mavenCentral() maven { url = new URL('https://repo.spring.io/snapshot') } maven { url = new URL('https://repo.spring.io/milestone') } maven { url = new URL('https://jitpack.io') } } dependencies { implementation platform('org.springframework.boot:spring-boot-dependencies:2.2.0.M3') implementation platform('io.r2dbc:r2dbc-bom:Arabba-M8') implementation "com.github.making:moneyger-ui:master-SNAPSHOT" implementation "org.springframework:spring-context" implementation "org.springframework:spring-webflux" implementation "org.springframework:spring-tx" implementation "ch.qos.logback:logback-classic" implementation "io.projectreactor.netty:reactor-netty" implementation "com.fasterxml.jackson.core:jackson-databind" implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" implementation 'io.r2dbc:r2dbc-pool' implementation 'org.springframework.data:spring-data-r2dbc:1.0.0.M2' testRuntimeOnly 'io.r2dbc:r2dbc-h2' runtimeOnly 'io.r2dbc:r2dbc-postgresql' implementation 'am.ik.yavi:yavi:0.2.2' testImplementation ('org.springframework.boot:spring-boot-starter-test') { exclude module: 'junit' } testImplementation 'io.projectreactor:reactor-test' testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.assertj:assertj-core' }