2017-08-26 22 views
0

私は注入段階で作成されるべきクラスを持っていますが、このインスタンスはコード内のどこでも参照されません。このクラスは他の人と通信の方法は、イベントバスを経由して、私は、このクラスは、コード内のどこかがGuice:参照されていないオブジェクトのオブジェクトの作成

@Inject 
DefaultCounterTracker counterTracker 

が記述されている場合にのみ、私が使用して結合しようとしている作成されていることを見てきました

public class DefaultCounterTracker { 
    private final EventBus eventBus; 
    private final ReplicatedMap<String, String> trackerCache; 

    @Inject 
    public DefaultCounterTracker(
    EventBus eventBus, 
    @Named("CountersTrackerCache") ReplicatedMap<String, String> trackerCache) 
    { 
    this.eventBus = eventBus; 
    this.trackerCache = trackerCache; 
    bindListeners(); 
    } 

    private void bindListeners() 
    { 
    eventBus.localConsumer(CounterCreated.name(), (Handler<Message<String>>) event -> 
    { 
     handleCreation(event.body()); 
    }); 
    eventBus.localConsumer(CounterDestroyed.name(), (Handler<Message<String>>) event -> 
    { 
     handleDestruction(event.body()); 
    }); 
    } 

デバッグですプロバイダは何も変わりません:クラスが参照されていない場合、Guiceはそれを作成しません。 Guiceにそのことを伝える方法はありますか?私はポイントを逃したのですか?

インスタンスを手動で作成することもできますが、パラメータ(EventBusなど)のデフォルト実装を変更すると、コンストラクタ内の呼び出しを変更する必要があります。

任意の提案は言及クラスはシングルトンことになっている場合、あなたはAbstractModuleクラスのあなたのconfigureに結合()メソッドを指定することで、熱心にこのクラスのオブジェクトを作成することができます

答えて

0

を高く評価しました。

bind(DefaultCounterTracker.class).to(DefaultCounterTracker.class).asEagerSingleton(); 
関連する問題