Kotlin Springboot -- Part 5 Rest で全てのinstancesを作って Driver まで動くようにする

6290 단어 cakotlin



컴패니언 오브젝트 を使うと外から呼び出しやすいが、단위 테스트を書く時にうまくいかないため.

全 て クラスの men バ ー関 数 で 作っ て, そ の インスタンスを 作っ て使うように修正する.


쉬다



RestController 와 Template 없이 간단하게 만들었습니다.

personHoge = PersonHoge()


PersonHoge というクラスを使って変数を作る ことで、
そのクラスのインスタンスを作ることができる.

これでまずは Driver の インスタンスを引数なしで作成する.
다음 Gateway 의 인스턴스를, Driver 의 인스턴스를 引数に渡して作成する.
さらに Usecase のinstancesを、Gateway のinstancesを引数に渡して作成する.

作成された Usecase のinstancesの中のmenba関数の getAllPersons を呼び出して, 中身をとって return する.

これで 동반자 개체 を使わなくても
Usecase 와 Gateway が呼べて
게이트웨이 で 드라이버 が呼べる.

@RestController
class PersonHandler {
  @GetMapping("/")
  fun root(): String {
    return "index2"
  }
  @GetMapping("/persons")
  @ResponseBody
  fun getPersons(): String {
    val personsDriver = PersonsDriver()
    val personsGateway = PersonsGateway(personsDriver)
    val personsUsecase = PersonsUsecase(personsGateway)
    val persons = personsUsecase.getAllPersons()
    print(persons)
    return persons.toString()
  }
}





유스케이스



Gateway の インスタンスを受け取るように作る.

class PersonsUsecase(val personsGateway: PersonsGateway) {
  fun getAllPersons():Persons {
    return personsGateway.getAllPersons()
  }
}



게이트웨이



Usecase 에서 instancesで呼び出すようになっため
동반객체 は必要なくなった.
渡された Driver のinstantsを使って findAll した結果を return する.

class PersonsGateway(
  val personsDriver: PersonsDriver
) {
  fun getAllPersons():Persons {
    return personsDriver.findAll()
  }
}



운전사



最終地点なので何もinstantsを受け取らない.
동반자 だけ解除した.

class PersonsDriver() {
  private val data:Persons = Persons(listOf(
    (Person(Name("taro"), Age(12))),
    (Person(Name("hanako"), Age(10))),
  ))
  fun findAll():Persons {
    return data
  }
}



まとめ



코틀린 스프링부트 で
나머지 <- 사용 사례 <- 게이트웨이 <- 드라이버
と伝搬していくためには

쉬다 で
Driver のクラスから引数なしで Driver の instantsを作り
Gateway のクラスから Driver の instanceを引数にして Gateway の インスタンスを作り
Usecase のクラスから Gateway の instantsを引数にして Usecase の instantsを作り

유스케이스 のinstancesの中身を使う.

좋은 웹페이지 즐겨찾기