0

Google appengine プロジェクトで Dagger2 を使用しており、特定のオブジェクト (MyObject) のシングルトン インスタンスを使用するサーブレットがいくつかあります。

@Singleton
@Component(modules = {MyModule.class})
public interface MyComponent {
  IMyObject object();
}

次に、すべてのサーブレットで同じ IMyObject を取得できるように、DaggerMyComponent.create() もシングルトンにする必要があります。そうするために、私は

DaggerMyComponent INSTANCE = DaggerMyComponent.create()

私の MyComponent インターフェイスに。ただし、それでも create() が誤って再度呼び出される可能性があり、必ずしも私にとってはかなりの解決策のようには見えません。

何か案は?

ありがとう!

4

1 に答える 1

2

残念ながら、バージョン 2.0.1 に関しては、Dagger はそのような制限を提供していないとドキュメントは言っているようです。

スコープ アノテーションに関連付けられた適切な動作を得るために、必要に応じて新しいコンポーネント インスタンスをインスタンス化するのは呼び出し元の責任です。たとえば、Singleton コンポーネントはアプリケーションごとに 1 回だけインスタンス化する必要がありますが、RequestScoped コンポーネントはリクエストごとに 1 回インスタンス化する必要があります。

http://google.github.io/dagger/api/latest/dagger/Component.html

于 2015-06-12T14:13:23.790 に答える