this tutorial의 권장 사항에 따라 GWT 응용 프로그램을 구현했습니다. 또한 샘플 코드를 다운로드했는데 데모의 모든 발표자가 주 발표자 생성자에 삽입되어 인스턴스화되어야한다는 것을 알았습니다. 저자는 원본이 포함 :GWT/Gin Presenter 인스턴스화
내가 어떤 발표자가 GreetingPresenter 주입되지 않을 경우, 인스턴스화되지 않는다는 것을 확인public class GreetingPresenter extends WidgetPresenter<GreetingPresenter.Display> {
// FUDGE FACTOR! Although this is not used, having GIN pass the object
// to this class will force its instantiation and therefore will make the
// response presenter listen for events (via bind()). This is not a very good way to
// achieve this, but I wanted to put something together quickly - sorry!
private final GreetingResponsePresenter greetingResponsePresenter;
@Inject
public GreetingPresenter(final Display display, final EventBus eventBus, final DispatchAsync dispatcher, final GreetingResponsePresenter greetingResponsePresenter) {
super(display, eventBus);
this.dispatcher = dispatcher;
this.greetingResponsePresenter = greetingResponsePresenter;
bind();
}
. 데모 용으로는 전체 앱에 두 명의 발표자 만 있기 때문에 멋지지만 실제 응용 프로그램에서는 심각한 불편을 겪을 수 있습니다.
Presenter 인스턴스화를 수행하는 적절한 방법은 무엇입니까?
발표자 모듈 :
public class GreetingClientModule extends AbstractPresenterModule {
@Override
protected void configure() {
bind(EventBus.class).to(DefaultEventBus.class).in(Singleton.class);
bind(PlaceManager.class).in(Singleton.class);
bindPresenter(GreetingPresenter.class, GreetingPresenter.Display.class, GreetingView.class);
bindPresenter(GreetingResponsePresenter.class, GreetingResponsePresenter.Display.class, GreetingResponseView.class);
bind(AppPresenter.class).in(Singleton.class);
bind(CachingDispatchAsync.class);
}
}
Ginjector :
@GinModules({ ClientDispatchModule.class, GreetingClientModule.class })
public interface GreetingGinjector extends Ginjector {
AppPresenter getAppPresenter();
PlaceManager getPlaceManager();
}
나는 소스 코드를 다운로드하여 테스트했으며, 언급 한 클래스도 포함되어있다. 여전히 GreetingResponsePresenter가 작동하려면 "FUDGE FACTOR"가 필요합니다. S –