'Dependency Injection' 태그의 글 목록 — SH's Devlog

Dependency Injection

Android/Dependency Injection

[Android/DI] Dagger2 - Scope와 dagger.android

Dagger의 가장 큰 장점은 계층관계의 오브젝트 그래프를 만들 수 있다는 것 입니다. 이번에 다룰 @Subcomponent와 @Scope를 이용하면 오브젝트 그래프를 이용하여 앱 구성요소의 생명주기 동안 메모리 할당과 해제를 효율적으로 관리할 수 있게 해줍니다. Application(Singleton) Scope 지정 먼저, Application Scope를 가져야하는 클래스들(Repository, DataSource 등등....)은 앱이 실행되는 동안 인스턴스가 메모리에 있기를 원하기 때문에 Application의 생명주기와 동일한 범위를 따르는 오브젝트 그래프를 만듭니다. 이렇게 하면 그래프는 앱 수명 주기에 연결됩니다. 그래프를 생성하는 인터페이스는 @Component로 주석이 지정되므로 Appl..

Android/Dependency Injection

[Android/DI] Dagger2 - MultiBinding 주입하기

Dagger에는 단일 데이터를 주입받는 방법 외에도, 자료구조를 이용하여 n개의 데이터를 주입받는 방법이 있습니다. 대표적으로 Set과 Map을 이용하는 방법이 존재합니다. Set MultiBinding 먼저, Set을 이용한 MultiBinding입니다. SetModule.kt @Module class SetModule { @Provides @IntoSet fun provideHello(): String = "Hello" @Provides @IntoSet fun provideWorld(): String = "World" @Provides @ElementsIntoSet fun provideSet(): Set { return HashSet(listOf("seosh", "817")) } } @IntoSet을..

Android/Dependency Injection

[Android/DI] Dagger2 - Qualifier 어노테이션

이번 포스트에서 다룰 내용은 Qualifier 어노테이션입니다. 이름 그대로 객체를 식별해주는 어노테이션입니다. @Named Qualifer Dagger는 의존성 주입을 요청했을 때 Module에 선언된 자료형(Type)과 동일한 객체를 주입해줍니다. 따라서, Module에 동일한 Type의 객체가 여러개 선언되어 있을 경우, 컴파일 타임에 에러를 발생하게 됩니다. 의존성주입은 Interface를 기반으로하는 코드를 권장하므로, 같은 부모를 가진 여러 Child 클래스가 존재할 가능성이 매우 높습니다. 이러한 경우를 위해서 @Named 어노테이션을 통해서 같은 타입의 여러 객체를 선언하고 주입해줄 수 있습니다. 사용법은 간단합니다. Module의 @Provides어노테이션과 @Injection 어노테이..

Android/Dependency Injection

[Android/DI] Dagger2 - Lazy Injection vs Provider Injection

Lazy 혹은 Provider를 사용하면 의존성 주입의 시점을 늦추거나 항상 새로운 객체를 반환 받을 수 있도록 할 수있습니다. Lazy Injection vs Provider Injection Cpu 객체는 Provider를 통해 주입해주고, Ram 객체는 Lazy를 통해 주입해주도록 해주겠습니다. ComputerComponent.kt @Component(modules = [ComputerModule::class]) interface ComputerComponent { fun inject(computer: Computer) @Component.Builder interface Builder { fun computerModule(computerModule: ComputerModule): Builder fu..

Android/Dependency Injection

[Android/DI] Dagger2 - 소개 및 Module과 Component

Dagger란? Dagger는 자바 안드로이드에서 사용 가능한 정적 컴파일타임 의존성주입 프레임워크 입니다. Annotation Proccessor를 통해 컴파일 타임에 어노테이션을 읽고 의존성 주입에 필요한 클래스들을 생성합니다. 어노테이션 처리를 컴파일 시점에 별도의 프로세서에서 처리하므로 성능이 향상되고, 클래스 Reflection을 사용하지 않으므로 Runtime Exception 발생을 막으며 Proguard 설정의 번거로움에서 벗어날 수 있습니다. Module Module에서 하는 역할은 @Provides,@Binds를 통해 주입할 클래스의 인스턴스를 생성합니다. 메소드의 반환 타입을 통해서 주입할 객체를 정하며, 반환타입이 같을 경우 @Qualifier를 통해 주입할 객체를 지정할 수 있습니..

Android/Dependency Injection

[DI] Dependency Injection이란?

Dependency Injection이란? 의존성 : A클래스가 B클래스에 대한 참조가 있을 경우 A는 B에 의존한다라고 하고 B는 A에 대한 종속성이 있다(종속한다)라고 합니다. 이 의존성을 잘 관리하지 않으면, 프로젝트의 규모가 커질수록 코드변화에 유연하게 대처할 수 없어서 많은 코드 수정을 하게 될 수도 있습니다. SOLID DIP(Dependency Inversion Principle) A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS. B. ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON..

반응형
seunghwaan
'Dependency Injection' 태그의 글 목록