본문 바로가기

전체 글

[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(3) 추상적인 멀티 바인딩 멀티 바인딩의 선언은 @MultiBinds 어노테이션을 사용한다. @MultiBinds 어노테이션은 Module 내의 매개 변수를 갖지 않는 추상 메서드에서 사용할 수 있으며 이 메서드는 변환 타입이 Map 또는 Set 이어야 한다. @Module public abstract class MultibindsModules { @Multibinds abstract Set strings(); } 이 Module을 Component에 추가하고 선언된 Multi Binding Set을 Component의 메서드로 추가한다. @Component(modules = MultibindsModules.class) public interface MultibindsComponent { Set getStri.. 더보기
[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.. 더보기
Google Codejam 2021 후기 스코페 2차를 망친날 Google Codejam 시험을 알게되었다. 다행히 그날이 Qual 마지막날이라 Qual은 통과 그리고 Round 1a, 1b, 1c를 전부 떨어져서 내 첫 Codejam은 끝났다 떨어진 이유들을 분석해보면 [1a] 1a때에는 너무 오랜만에 코딩을 해서 1번 구현에서 망쳤다. 끝나고나서 2번, 3번을 고민해봤는데, 1번을 풀었어도 2, 3번을 못풀어서 떨어졌을 것 같다. [1b] 1b때에는 3문제 전부 너무 길었다. 영어가 서툴어서 문제 해석을 완벽히 못했고, 문제가 길다보니 조급해져서 조건들을 몇개 놓쳤다. 1a 때보다 잘한건 1번이 어려워서 빨리(?) 포기하고 2번을 풀었던 것. 근데 2번은 생각보다 쉬웠는데, 너무 조급하게 해서 Impossible 상황을 고려를 안함. (문제.. 더보기