본문 바로가기

architecture6

Dagger2 기본 #5 - Binding '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 정리 및 간단 리뷰를 남긴다 어느정도 아키텍처, dagger, rxJava, Jetpack 등의 선행학습 후 복습 차원에서 보면 좋을 것 같다 1. @Binds Module 내 추상 메소드에 지정할 수 있다 하나의 파라미터만 가져야 한다 파라미터를 리턴 타입으로 바인드할 수 있으며, @Provides 메소드 대신 효율적으로 사용할 수 있다 ex) @Binds abstract fun bindRandom(secureRandom: SecureRandom) : Random 이미 바인드된 SecureRandom 을 Random 타입으로 한 번 더 바인드 할 수 있다 2. @BindsOptionalOf Module 내 추상 메소드에 지정할 수 있다 파라미터를 가질 .. 2020. 5. 29.
Dagger2 기본 #4 - Component 의존 관계 '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 정리 및 간단 리뷰를 남긴다 어느정도 아키텍처, dagger, rxJava, Jetpack 등의 선행학습 후 복습 차원에서 보면 좋을 것 같다 여러개의 Component 를 생성하고 서로 의존 관계를 맺을 수 있으며, SubComponent 와 Component 상속 두 가지 방법이 있다. 1. SubComponent 상위 Component 란 Component/SubComponent 둘 다 될 수 있으며, SubComponent 는 상위 Component 내에 구현된다 또한 SubComponent 내에 또 다른 SubComponent 를 구성할 수도 있다 SubComponent 는 상위 Component 에 바인딩된 모든 의존성을 제공 받는다 반대로 상.. 2020. 5. 29.
Dagger2 기본 #3 - Component '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 정리 및 간단 리뷰를 남긴다 어느정도 아키텍처, dagger, rxJava, Jetpack 등의 선행학습 후 복습 차원에서 보면 좋을 것 같다 바인딩된 Module 로부터 Object graph (또는 Container) 를 생성하는 역할을 한다 @Component 어노테이션을 사용하여 interface 와 abstract 클래스에만 붙일 수 있다. 컴파일 타임에 어노테이션 프로세서에 의해 생성된 클래스에는 prefix 로 'Dagger' 가 붙는다 ex) 컴포넌트명 = HelloComponent -> DaggerHelloComponent @Component 속성으로는 modules, dependencies 가 있다. modules : Component .. 2020. 5. 29.
Dagger2 기본 #2 - Module '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 정리 및 간단 리뷰를 남긴다 어느정도 아키텍처, dagger, rxJava, Jetpack 등의 선행학습 후 복습 차원에서 보면 좋을 것 같다 Component 에 의존성을 제공하는 역할로 클래스에 @Module 어노테이션을 붙이면된다. 1. @Provides 메소드 Module 클래스에서 선언되는 메소드에는 @Provides 어노테이션을 붙이며, 컴파일 타임에 의존성을 제공하는 바인드된 Provider 를 생성한다 리턴 타입으로 Component 내에서 의존성이 관리되기 때문에 하나의 Component 에는 리턴 타입이 중복되면 안된다 (중복 시 컴파일 타임에 에러 발생) 메소드는 null 을 리턴해야 할 경우 @Nullable 을 추가해야하며, 코틀린.. 2020. 5. 28.
Dagger2 기본 #1 - 시작 '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 정리 및 간단 리뷰를 남긴다 어느정도 아키텍처, dagger, rxJava, Jetpack 등의 선행학습 후 복습 차원에서 보면 좋을 것 같다 1. Dagger2 란? JAVA 와 Android 를 위한 DI 프레임워크 Reflection 을 사용하지 않는다 런타임 시 바이트 코드를 생성하지 않는다 컴파일 타임에 Annotation processor 에 의해 DI 와 관련된 코드를 분석하고 자바 코드를 생성한다 2. Dagger 진입장벽 Annotation 기반 코드 생성이 익숙치 않으면 내부 동작을 유추하기 힘들다 Component, Subcomponent, Module 등 Dagger 에서만 사용하는 용어로 인해 혼란스럽다 3. Dagger 장점 자원.. 2020. 5. 27.
DI : Dependency Injection '아키텍처를 알아야 앱 개발이 보인다' 책을 보며 정리 및 간단 리뷰를 남긴다 어느정도 아키텍처, dagger, rxJava, Jetpack 등의 선행학습 후 복습 차원에서 보면 좋을 것 같다 DI 개념을 훑어보면 간단해보이지만, 변경의 전이/제어의 역전 같은 단어는 정말 머리에 안들어온다,, 아 인터페이스 기반으로 주입하면 되는구나 싶지만 실제로 이미 많이 구현되어있는 프로젝트에 적용하려고 하면 이미 구조가 잘 잡혀있는데 변화를 준다는게 쉽지 않은 것 같다. (오히려 프로젝트 초기 단계부터 시작한다면 구조 잡기가 훨씬 수월할듯) 어쨋든 dagger2 를 사용하기 전 간단하게 DI 개념을 읽고 간다! 1. 의존성 주입 (DI : Dependency Injection) : 하나의 객체에 다른 객체의 의존성.. 2020. 5. 25.