Android 자바 디 결합 프레임 워 크 주석 Dagger 2

참고 문서
4
  • dagger 2 는 당신 을 손 에서 놓 지 못 하 게 합 니 다.-기초 의존 주입 프레임 워 크
  • Dagger 작업 원리
    dagger 2 의 작업 원 리 는 자바 코드 를 바이트 코드 로 컴 파일 하 는 과정 에서 dagger 2 는 모든 Component(@Component 로 수 정 된 interface)를 처리 하여 이 interface 를 실현 하 는 클래스 를 자동 으로 생 성 하 는 것 입 니 다.생 성 된 클래스 는 Component 의 이름 앞 에'Dagger'를 추가 하 는 것 입 니 다.예 를 들 어 우리 가 정의 하 는 AppComponent,대응 하 는 자동 생 성 클래스 를 DaggerAppComponent 라 고 합 니 다.우 리 는 하나의 interface 를 실현 하려 면 안의 모든 방법 을 실현 해 야 한 다 는 것 을 알 고 있 기 때문에 DaggerAppComponent 는 login Presenter()를 실현 했다.이 방법의실현 하 는 방식 은 대체적으로 AppComponent 가 관리 하 는 AppModule 에서 LoginPresenter 의 Provider 방법 을 찾 은 다음 에 이 방법 을 호출 하여 LoginPresenter 로 돌아 가 는 것 이다.
    Dagger 2 의 중요 한 역할.
    인 스 턴 스 링크 보기:http://www.jianshu.com/p/1d52fde638cf
    Dependency 를 생산 하 는 공장:Module
  • @Module:하나의 클래스 를 표시 하 는 데 사용 되 는데 이것 은 일반적인 클래스 가 아니 라 Module 임 을 나타 낸다.모듈 은 Dependency 를 생산 하 는 곳 입 니 다
  • @Provides:@Module 레이 블 클래스 의 방법 을 표시 하 는 데 사 용 됩 니 다.이 방법 은 Dependency 를 생산 하 는 데 사 용 됩 니 다.이 방법 을 Provider 방법 이 라 고 합 니 다.(모듈 하나 에 도 정상 적 인 방법 이 있 을 수 있 기 때문이다

  • Dependency 공장 관리자:Component
    Module 과 달리 우 리 는 Component 를 실현 할 때 하나의 클래스 를 정의 하 는 것 이 아니 라 인터페이스(interface)를 정의 합 니 다.
    @Component(modules={AppModule.class})
    @Singleton
    public interface AppComponent {
    
        void inject(LoginActivity loginActivity);
    }
    
    

    modules 속성 은 하나의 배열 을 받 습 니 다.이 Component 가 관리 하 는 모든 Module 입 니 다.위의 예 에서 AppComponent 는 AppModule 하나만 관리 합 니 다.
    Component 가 Client 에 Dependency 를 제공 하 는 방법
    앞에서 우 리 는 Module 과 Component 의 실현 을 이 야 기 했 는데,다음은 Component 가 어떻게 Client 에 Dependency 를 제공 하 는 지 에 대한 문제 이다.일반적으로 두 가지 가 있 습 니 다.물론 모두 이 두 가지 가 아 닙 니 다.다만 이 두 가지 가 가장 자주 사용 되 고 이해 하 는 것 이 좋 습 니 다.일반적으로 이 두 가지 만 사용 하면 충분 하기 때문에 여 기 는 다른 방법 을 군말 하지 않 습 니 다.
    방법 1:Component 에서 Dependency 로 돌아 가 는 방법 을 정의 합 니 다.

    좋은 웹페이지 즐겨찾기