정상에서 IT를 외치다

[Dagger] Dagger step4 - Module 초기화 본문

안드로이드

[Dagger] Dagger step4 - Module 초기화

Black-Jin 2020. 2. 11. 17:33
반응형

안녕하세요. 블랙진입니다.


이번 포스팅에서는 모듈을 초기화 하는 방법에 대해 살펴보겠습니다. 지난 카페예제에서 카페를 생성할 때 아래와 같은 방법으로 생성했습니다.


@Module
public class CafeModule {

@Singleton
@Provides
CafeInfo provideCafeInfo() {
return new CafeInfo("BlackJin");
}

//
...
}


"BlackJin" 이라는 이름의 카페를 고정해서 만들었는데 카페 이름을 대거를 선언할 때 초기화 할 수 있게 수정해 보겠습니다.



1.  CafeComponent 수정


빌터 패턴 형식으로 Component 생성시 모듈을 선택하여 넣을 수 있습니다.


@Singleton
@Component(modules = CafeModule.class)
public interface CafeComponent {

//...

@Component.Builder
interface Builder{

Builder cafeModule(CafeModule cafeModule);

CafeComponent build();
}
}



2. CafeModule 생성자 추가


CafeModule에서는 CafeName을 받을 수 있는 생성자를 만들어 줍니다.


@Module
public class CafeModule {

private String cafeName;

public CafeModule(String cafeName) {
this.cafeName = cafeName;
}


@Singleton
@Provides
CafeInfo provideCafeInfo() {
return new CafeInfo(cafeName);
}

//...
}



3. 사용예제


CafeComponent cafe = DaggerCafeComponent.builder()
.cafeModule(new CafeModule("Tistory World"))
.build();

CafeInfo cafeInfo = cafe.cafeInfo();
cafeInfo.welcome();


에제에서 사용한 코드는 깃허브에서 보실 수 있습니다.

반응형
Comments