2012-03-20 4 views
0

동일한 클래스의 두 인스턴스를 작성하고 서로 다른 특성으로 주입 한 다음이 두 오브젝트를 두 클래스로 주입 시키길 원합니다 내 응용 프로그램의 특정 위치. 진 오브젝트 개체 작성 또는 동일한 클래스의 두 개의 다른 인스턴스 작성 사용자 정의

은 현재 내가 ... 내 ClientModule에서 나는 다음과 같은 않는 등 내 발표자의 다음

@Provides 
    @Named("bean1") 
    public MainBean getMainBean() { 
     MainBean mainBean = new MainBean(new SecondaryBean()); 
     return mainBean; 
    } 

그리고 방법이 있습니다

public MyPresenter(final EventBus eventBus, final MyView view, 
        @Named("bean1") MainBean bean, TitleSetupData data) { 
     super(eventBus, view); 
     this.bean1 = bean1; 
    } 

을 그리고 그것은 잘 작동합니다. 대응하는 @Named 어노테이션을 기반으로 올바른 bean을 얻는다.

그러나이 접근법은 @Provides 메소드에서 MainBean의 모든 종속성을 작성하고 주입해야한다는 점에서 약점이 있습니다.

예를 들어 SecondaryBean의 @Inject 주석은 적용되지 않습니다.

내가 할 수있는 한 가지는 관련된 종속성을 getMainBean 메소드에 전달하는 것이지만, 더 나은 또 다른 고급 솔루션이 있는지 궁금합니다.

누구나 아이디어가 있습니까?

답변

1

동일한 문제가 발생했습니다. 당신이 찾고있는 것은 @Assisted Inject이며, 생성자 매개 변수 중 일부가 주입되고, 일부는 객체를 인스턴스화 할 때 인수로 전달됩니다.

시작하는 데 도움이되는 this blog post에서 전체 예제를 찾을 수 있습니다.