Kotlin Springboot -- Part 8 인스턴스의 구성 요소 機能を使って 의존성 주입 がauto動で行われるようにする

3598 단어 springbootkotlinca



DI をして 各層で完全に分離された Unit Testを書くため.


以前のインスタンスタチ




    val personsDriver = PersonsDriver()
    val personsGateway = PersonsGateway(personsDriver)
    val personsUsecase = PersonsUsecase(personsGateway)
    val persons = personsUsecase.getAllPersons()


これまでは 휴식 に 全てのインスタンスを作成して

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


사용 사례


Rest & Usecase を引数에서 読み込む




@RestController
class PersonHandler(
  val personsUsecase: PersonsUsecase
) {


Rest でも引数で Usecase のinstancesを読み込むようにする.
HANDRANO 一番上に書いても これ다だけだ と クラスの インスタンスなどない.

@Component
class PersonsUsecase(
  val personsGateway: PersonsGateway,
) {


だが、Usecase に Component のAnnotationをつける ことで, これはアプリが動いた直後に優先して取り込むものとして認識されるので, RestController とし数としけしるこ.

@Component
class PersonsGateway(
  val personsDriver: PersonsDriver
) {



@Component
class PersonsDriver {


Gateway 와 Driver でも同様に書く.
これで各層の引数に書いておけば、Automotiveで各層が依存している層のinstanceを使用できるようになった.


まとめ



Rest 와 Domain 以外の各層で Component Annotationを書く.

そして Rest から Gateway まで引数に、依存する層のインスタンスを書く.

これで 휴식 で全ての層のinstantsを作成しなくても依存する層のinstantsが使えるようになる.

좋은 웹페이지 즐겨찾기