Kotlin Springboot -- Part 2 Driver に data class を定義して instance を作り、Usecase でまとめて Main で呼び出す

そもそもの main の フォルダ構成と方針




~/source/springboot/src/main/
kotlin/com/example/springboot/
SpringbootApplication.kt


ここに

package com.example.springboot

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
class SpringbootApplication

fun main(args: Array<String>) {
    runApplication<SpringbootApplication>(*args)
    println("main worked")
}


메인이유루형.

ここを REST の一番外側として扱う?드라이버 として扱う?

とりあえず 메인을 게이트웨이 として扱い、
Inmemoriで変数をデータとして扱う 드라이버 を作成して import する

SpringbootDriver 작업



SpringbootApplication 과 並列に
SpringbootDriver を作成

package com.example.springboot

data class Person(val name: String = "Taro", val age: Int = 0 ) {
    fun findName(): String {
        return name
    }
    fun findAge(): Int {
        return age
    }
}
val taro = Person("Taro", 12)
val hanako = Person("Hanako", 10)



사람 クラスにデータを入れて初期化して
findName, findAge 라고 하는 getter を用意する
사람 クラスを使って 太郎と花子のインスタンスを作成
수출 は必要なかった.

main で Driver を呼び出す



import com.example.springboot.taro
import com.example.springboot.hanako

fun main(args: Array<String>) {
    runApplication<SpringbootApplication>(*args)
    println("main worked")
    val taroName = taro.findName()
    val hanakoName = hanako.findName()
    println(taroName)
    println(hanakoName)
}

SpringBootDriver로 작업한 인스턴스를 가져오기
main で直接呼び出せた.

(グローバルに宣言している 인스턴트가 아닌로
import しなくても呼べた)

これで Driver で作ったmonoを main で呼び出した.

유스케이스 で 드라이버 を呼び出す



main でいきなり Driver を呼ぶのは不自然なので
せめて UseCase を介する形にする.

package com.example.springboot

import com.example.springboot.taro
import com.example.springboot.hanako

fun printAllName () {
    val taroName = taro.findName()
    val hanakoName = hanako.findName()
    println(taroName)
    println(hanakoName)
}


Driver を集約한 UseCase を作っ

import com.example.springboot.printAllName


@SpringBootApplication
class SpringbootApplication

fun main(args: Array<String>) {
    runApplication<SpringbootApplication>(*args)
    printAllName()
}


main으로 공개되었습니다.

2022-08-28 18:53:33.005  INFO 1430266 --- [           main] c.e.springboot.SpringbootApplicationKt   : Started SpringbootApplicationKt in 1.725 seconds (JVM running for 2.063)
Taro
Hanako


これでもいける.

Kotlin のファailの値のやりとり完全に理解した


まとめ



Kotlin/SpringBoot 와 CleanArchTechture っ ぽく

드라이버 -> 사용 사례 -> 기본

って値をやり取りするなら

드라이버 で
package でアプリ名を明示
データクラスとゲttaーを作成
データクラスを使って実際のデータとなるインスタンスを作成

사용 사례 でアプリ名からInstansを直接inport
ユースケースに基づいた形にして fun で定義

Main で アプリ名から(Usecaseで つくった)関数を直接inポーと
main の中で呼び出す

어서오세요.

좋은 웹페이지 즐겨찾기