module

    [Kotlin] internal 변경자 사용법 한 번에 정리하기

    internal 변경자(Modifier)의 의의internal 변경자는 코틀린에서 클래스 혹은 함수에 모듈 수준의 가시성을 설정하기 위해 사용하는 변경자이다. 모듈 수준의 가시성이란 모듈 내에서는 public처럼 어디에서나 접근 가능하지만, 모듈 외부에서 접근하지 못하는 변경자이다. internal을 설정해야 하는 경우는 다양하다. 모듈 내부에서만 사용하는 함수에 internal을 설정해 외부에서 접근하지 못하도록 만드는 경우가 일반적이며, 외부에는 인터페이스만 공개하고 모듈 내부에서 인터페이스의 구현체(클래스)를 만들어 사용하는 경우에 유용하다. internal 변경자 사용 예시대표적으로 우리가 사용하는 젯브레인사에서 개발한 코루틴 라이브러리의 경우 Mutex 인터페이스의 구현체인 MutexImpl을 ..

    [Gradle] 프로젝트 수준의 Gradle에서 모듈 수준의 Gradle 제어하기

    Project 수준의 build.gradle에서 모듈 수준의 build.gradle 제어하기 멀티 모듈 프로젝트를 만들다보면, 모든 모듈에 dependencies나 task들이 적용되어야 하는 경우가 있다. 이를 위해 프로젝트 수준의 build.gradle에서 모듈 수준의 build.gradle을 제어해야 할 경우가 생긴다. 이를 위해 Gradle에서는 allprojects, subprojects, project 메서드를 제공하는데 이번 글에서는 이 메서드들을 다루어볼 것이다. allprojects : 프로젝트 수준의 build.gradle 뿐만 아니라 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 제어 subprojects : 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 ..

    [Dagger2] 3. Component Injection 메서드 - 프로비전(Provision)

    Interface로서의 Component 앞서 Component는 Interface의 역할을 한다고 하였다. Component Interface에서 제공되는 함수는 두 가지가 있을 수 있다. 하나는 프로비전 메서드로 그 자체로 Provider에 의해 반환되는 인스턴스를 반환하는 메서드이며, 다른 하나는 멤버 인젝션 메서드로 인자로 받는 인스턴스에 Provider에 의해 반환되는 인스턴스를 제공하는 메서드이다. 우리는 이 둘을 다음과 같이 부른다. 프로비전(Provision) 메서드 그 자체로 Provider에 의해 만들어진 인스턴스나, 프로퍼티가 주입된 인스턴스를 반환하는 메서드 멤버 인젝션(Member Injection) 메서드 인자로 받는 인스턴스에 Provider에 의해 반환되는 인스턴스를 제공하는..

    [Dagger2] 2. Dagger2에서 Injection이 일어나는 방식

    Dagger2의 IOC Container 구성 앞의 글에서 Dagger2의 3가지 구성요소 Container, Module, Provider에 대해 배웠다. Component : 클래스의 인스턴스를 모아놓는 저장소(Container) 역할. 각 인스턴스들은 Module 단위로 제공된다. Module : Module 단위로 클래스의 인스턴스를 모아놓는 역할 Provider : 클래스의 인스턴스를 제공(Provide)해주는 역할 이제 각 부분이 어떤 역할을 하는지 알았으므로 더욱 상세히 정리해보고자 한다. Dagger2을 이용해 의존성 주입 구현하기 앞의 글에서 다음과 같은 그림을 본 적이 있다. 는 의존성을 약화시키기 위한 인터페이스의 역할에 대해 설명하면서 나온 그림이다. CPU Time을 구하기 위해 ..

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

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