본문 바로가기

Dagger2

[Dagger2] Assisted Injection Dagger 2.31 버전에 @Assisted, @AssistedInjection 등 Assisted Injection 관한 내용들이 추가되었다. 최신버전은 2.35.1 버전이다. @AssistedInjection 이 언제 사용되는지를 알아보자. 기존 의존성 주입 예제들과는 다르게 주입되는 값이 상황에 따라 변하는 경우 Assisted Injection을 사용한다. 앱에서 사용자 정보를 보는 화면을 생각하면 된다. 사용자 별로 ID, Phone Number 등 다른 정보를 입력받아 ViewModel에 의존성 주입을 해줄 때 Assisted Injection을 사용할 수 있다. 우선 간단한 예제를 보자. Robot 객체를 만들려 하는데 Robot의 이름은 입력받고, Robot의 Version은 항상 최신 .. 더보기
[Dagger2] Multi Binding(2) SubComponent 컴포넌트로 부터 멀티 바인드 된 Set 또는 Map을 SubComponent도 그대로 물려받을 수 있습니다. @Component(modules = ParentModule.class) public interface ParentComponent { Set strings(); ChildBuilderComponent.Builder childCompBuilder(); ChildFactoryComponent.Factory childCompFactory(); } @Module(subcomponents = ChildBuilderComponent.class) public class ParentModule { @Provides @IntoSet String string1() { return "pare.. 더보기
[Dagger2] Multi Binding(1) Dagger2의 Multi Binding을 사용하여 여러 모듈에 있는 같은 타입의 객체를 하나의 Set 또는 Map 형태로 관리할 수 있습니다. 1. Set Multi Binding Set Multi Binding에는 2가지 종류가 있습니다. @IntoSet 어노테이션을 사용하는 방법과 @ElementsIntoSet 어노테이션을 사용하는 방법 1) @IntoSet 객체 각각을 한개씩 Set에 넣는 방법 Module에는 기존과 동일하게 Provide 함수를 만들고 @IntoSet 어노테이션을 추가합니다. @Module public class SetModuleV1 { @Provides @IntoSet String provideHello() { return "Hello"; } @Provides @IntoSet.. 더보기