Dagger2란 안드로이드에서 의존성 주입을 구현하기위해 가장 많이사용하는 라이브러리이다.
Module
모듈은 객체를 생성해서 공급해주는 역할을 한다. Hero라는 객체는 Person, Weapon 객체를 가지고 있어야 하며 기존에는 각 객체를 하나씩 생성하고 Hero(Person, Weapon)과 같은형태로 구현해야 한다. 이것을 직접 생성하지 않고도 외부에서 객체를 주입할 수 있다.
간단한 어노테이션으로 구현이 가능하다.
Component
실제로 객체를 생성하기 위해서는 컴포넌트를 사용한다. 사용법은 아래와 같이 인터페이스로 구현되며 Component어노테이션을 사용한다.
Component에서 Hero 객체를 생성하는데 Dagger가 Hero를 생성할때 어떤 인지가 필요한지 알아야 한다. 이를 @Inject어노테이션을 사용하여 해결한다.
프로젝트 리빌드 후 자동으로 생성된 코드로인하여 아래와 같은 코드 한줄로 간단하게 객체 생성이 가능하다.