Provider

    [Dagger2] 7. Component Builder와 @BindsInstance

    예제6 예제 링크 : https://github.com/seyoungcho2/Dagger2Example 이 글은 예제 6과 함께 한다. 예제 6의 코드 구조는 다음과 같다. Component와 Component Builder 이전 예제에서 generate된 코드를 보면 다음과 같은 코드가 생성되어 있다. public final class DaggerSchoolComponent implements SchoolComponent { .. public static final class Builder { private Builder() { } public SchoolComponent build() { return new DaggerSchoolComponent(); } } } 별도로 Builder을 설정하지 않아도..

    [Dagger2 심화] 1. @Provides의 특수한 형태 @Binds

    @Binds는 @Provides의 특수한 형태일 뿐이며, @Provides와 같은 역할을 한다. 다른 점은 Binds에는 여러 제약이 있고, 제약이 많은 만큼 코드를 덜 생성한다는 점이다. 지금부터 @Binds에 어떠한 제약이 있는지 어떤 경우에 사용이 되어야 하는지 살펴보자. @Binds @Binds는 하나의 객체를 변수로 받아 해당 변수를 생성(생성자 주입)하고 프로퍼티, 메서드까지 @Inject가 붙은 모든 주입을 처리하고 나서 반환하는 Annotation이다. @Binds는 @Provides와 같은 역할을 하지만, @Provides에 비해 많은 제약이 있어 코드를 덜 생성한다. @Binds를 쓰기 위한 조건으로는 두 개의 필수적인 조건이 있다. @Binds는 추상(abstract) 클래스의 추상(..

    [Dagger2] 1. 의존성 주입과 Dagger2

    앞의 글에서 의존성 주입이란 무엇인지. 왜 필요한지를 알게 되었다. 의존성 주입이란 무엇이며 왜 필요한가? 목표 의존성 주입이 무엇인지 이해한다. 의존성 주입이 왜 필요한지 이해한다. 의존성 주입이란? 의존성 주입이란 클래스간 의존성을 클래스 외부에서 주입하는 것을 뜻한다. 더 자세하게는 kotlinworld.com 이번 글에서는 이러한 의존성 주입을 쉽게 할 수 있도록 도와주는 프레임웍 Dagger2에 대해 살펴본다. 그 전에 앞의 글에서 의존성 주입을 위해 필요했던 사항을 살펴보도록 한다. 의존성 주입을 위해 필요한 사항 의존성 클래스간의 강한 의존성은 인터페이스화를 통해 약한 의존성을 가지도록 만들 수 있다. 주입 클래스A에 의존성이 있는 클래스B의 인스턴스를 클래스A 내부에서 생성하는 것이 아니라..