[Sping Webflows+R 2 DBC]掲示板CRUD例(1)


本文はSpring MVCの開発経験を前提として作成した.

入る前に。


新開発事業導入Spring Webfluxについて検討し,簡易実施のTOY事業を共有した.
未熟なのか、最近開発されたフレームワークなので、真似できる例の不足を感じたので、初めて作った文章です.理論的および概念的要素の位置づけはすでに多く,リンクとして付加または省略され,Reactiveプログラムを簡単に体験することを目的として,実際の操作のコード(回転すると間違ってしまう)を中心に展開される.

開発環境


IDE: IntelliJ
Language: JAVA 11
Database: Postgres/R2DBC

プロジェクト構造



一般的なMVC構造と同じである.HTTP EndPoint露光は@Controllerを採用しているが、Router Functionにも対応している.
Router FunctionはJavaではあまりメリットがないようです(Swaggerを使うとコードが延長されるだけです)?この章では、簡単な例を1つだけ説明します.

プロジェクトの作成


筆者はIntelliJを使用しています.

環境設定


build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-r2dbc'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'io.r2dbc:r2dbc-postgresql'
    runtimeOnly 'org.postgresql:postgresql'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    implementation 'org.springdoc:springdoc-openapi-webflux-ui:1.5.12'
}

Swagger


API呼び出しを容易にするために、まずコロンを追加しました.gradle dependencyに'org.springdoc:springdoc-openapi-webflux-ui:{버전}'万を追加し、docketやその他の設定を必要とせずに使用できます(編-安).
url:{ipアドレス}:{port}/webjars/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/
必須要素ではありませんが、Swagerページをカスタマイズするために、メインクラスに@OpenAPIDefinition言語が追加されました.

WebfluxBoardApplication.java

@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "Webflux board II", version = "0.0", description = "Created 2021/11/12"))
public class WebfluxBoardApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebfluxBoardApplication.class, args);
    }

}

DB


R 2 DBCとサポートデータベースのリストは詳細については、「文書」を参照してください。
Mysqlを使用して実装するには、次のブログを参照を実行します.
筆者はdockerのpostgres画像を利用した.
使用するDBに従ってgradleにdependencyを追加し、application.ymlで設定します.接続工場を構成するためにbeanを生成してもよい.

application.yml

spring:
  r2dbc:
    url: r2dbc:postgresql://localhost:9005/webflux #?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Seoul
    username: xxx
    password: xxx
    pool:
      max-size: 100
ddlはサポートされていません.
監査機能を使用するDatabaseConfigクラスを作成します.

DatabaseConfig.java

import org.springframework.context.annotation.Configuration;
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;

@Configuration
@EnableR2dbcAuditing
public class DatabaseConfig {
}

の最後の部分


基本的な配置はもう終わりました.コントローラ、サービス、リポジトリ、エンティティを実装するだけで済みます.
次の章では、