의존 주입 Dagger 2 학습

2886 단어 Dagger2
참고:1.Dagger 2 기초 주입(이해 촉진)2.공식 문서 3.Android 전반 부 에 있 는 Dagger 2.Dagger 2-API
설정 사용
  • 프로젝트 루트 procject.gradle 내 dependencies 에 classpath 추가:
  • dependencies{
    classpath'com.android.tools.build:gradle:1.5.0'//gradle    
    classpath'com.neenbedankt.gradle.plugins:android-apt:1.4'
     }
  • gradle(app)에 apt 플러그 인 추가:
  • apply plugin: 'com.neenbedankt.android-apt'
  • gradle(app)에 컴 파일 추가:
  • apt 'com.google.dagger:dagger-compiler:2.0'
    compile 'com.google.dagger:dagger:2.0'
    provided 'javax.annotation:jsr250-api:1.0'

    Dagger 2 설명
  • @Inject:Declaring Dependencies 성명 의존.주입 기,표지 가 주 입 된 대상.대상 생 성 을 위 한 구조 적 방법 Use@Inject 를 호출 하여 Dagger 가 사용 해 야 하 는 생 성 자 를 주석 으로 지정 합 니 다.new instance 가 요청 되면,Dagger 는 required parameters values 를 취득 하고 this constructor 를 호출 합 니 다.Dagger 는 fields 를 직접 주입 할 수 있 습 니 다.무 참 구조 함수 에@Inject 주 해 를 추가 하면 대상 이 생 성 됩 니 다.class has@Inject-annotated fields but no@Inject-annotated constructor 가 있 는 경우,Dagger 는 해당 fields 를 요청 하면 주입 합 니 다. but will not create new instances. Add a no-argument constructor with the @Inject annotation to indicate that Dagger may create instances as well.
  • @Provides:satisfy a dependency.의존 을 제공 합 니 다.모든 Provides 방법 은 Module provideXxx()is invoked whenever a Xxx is required.It contact with the@Inject
  • 에 속 해 야 합 니 다.
  • @Module:Modules are classes whose methods provide dependencies
  • @Component:an 인터페이스 연결 의존 과 소비 의존 구성 요소 annotate to such an interface and passing the module types to the modules parameter,Dagger 2 는 완전한 객체 그래프 를 만 들 수 있 습 니 다.인터페이스 구현 클래스:구현 은 Dagger 로 미리 고 정 된 인터페이스 와 동일 한 이름 을 가 집 니 다.해당 구현 에서 builder()메 서 드 를 호출 하여 인 스 턴 스 를 취득 하고 반 환 된 빌 더 를 사용 하여 종속 성 을 설정 하고 새 인 스 턴 스 를 빌 드 합 니 다.약자:접근 가능 한 기본 생 성자 c 가 있 는 모든 모듈an use .create() to initiate an instance.
  • @Singleton:단일 예 그래프 는 모든 클 라 이언 트 에 하나의 값 인 스 턴 스 를 사용 합 니 다.@Provides 와 클래스 를 디 코딩 할 수 있 습 니 다.
  • Dagger 2 특수
  • 게 으 른 주사:Lazy게 으 른 로 딩 당신 은 Lazy의 get()메 서 드
  • 의 첫 번 째 호출 까지 인 스 턴 스 를 지연 시 키 는 게 으 른 를 만 들 수 있 습 니 다
  • Provider injections

  • 이름 규칙:
  • @Provides methods are named with a provide prefix
  • @Module classes are named with a Module suffix.

  • 계속 이해 해 야 할 것:
  • Scope
  • Provider injections
  • 사용자 정의 주석 Qualifiers
  • 실전 에서 이 해 를 강화 해 야 한다
  • 일방적으로 개념 을 이해 하면 잊 혀 지고 전 모 를 이 루 지 못 한다.이른바 오 브 젝 트 그래프 가 어떻게 형성 되 었 는 지,의존 간 의 상호 의존,의존 을 제공 하 는 것 은 다른 의존 도 를 소비 해 야 한 다 는 것 을 잘 이해 하지 못 한다.그래서 생 성 코드 에서 이해 하면 앞으로 큰 도움 이 될 수 있 습 니 다.
  • 중단 점 은 이해 에 도움 이 된다
  • 좋은 웹페이지 즐겨찾기