2013-05-05 3 views
2

내 프로젝트 중 하나에서 단검을 시도하고 있는데이 상황이 발생합니다. "모듈 정의의 진입 점으로 클래스를 선언하는 경우에만 필드 주입이 작동합니다."단검 필드 주입 및 진입 점

올바른 동작입니까?

Messenger.class가 진입 점으로 선언되지 않은 경우 아래의 종속성이 Messenger 클래스에 삽입되지 않습니다. 생성자 인젝터 잘 작동하지만 다중 매개 변수 생성자를 선언하고 싶지 않습니다.

public class Messenger implements NetworkInterfaceListener { 
    @Inject public NetworkInterface networkInterface; 
    @Inject public MessageFactoryInterface messageFactory; 
    @Inject public Bus bus; 
    @Inject public Logger log; 
    ... 
    ... 
} 

답변

3

당신은 두 가지 대안이있다 : 하나가 모두 주입 할 PARAMS와 주 생성자를 선언하거나 필요할 때마다 당신의 단검 모듈의 (지금 injects이라고 함) entryPoints에 클래스를 입대 및 기본 생성자에서 mGraph.inject(this) 전화 (또는 할 실제로 클래스 외부에서도 "주입"할 수 있습니다.)

+1

또한 [dagger] (http://square.github.io/dagger/) 사이트에 따르면 "모듈의 바인딩이 나열된 주사 바깥에서 사용될 경우 모듈을 라이브러리로 표시합니다" , @Module (library = true) 주석을 사용하여 –