GWT には独自の DI メカニズムが組み込まれているようです ( GWT.create(Class<?>)
)。これに加えて、GINはどのような利点を提供しますか? それらを互いに組み合わせて使用する必要がありますか、それとも相互に排他的ですか? 私は Guice が好きなので、GIN を使用したくなりますが、GWT がすぐに同じことを行うのであれば、GIN を導入したくありません。
2 に答える
Gin とGWT.create
いくつかの違いがあります。Gin は、@Inject
アノテーションを介して、フィールド、セッター、またはコンストラクターのいずれかで依存関係を提供するGWT.create
ことを目的としていますが、具体的には実装を取得することを目的としています。Gin は指定した任意のコンストラクターを使用しますが、置換型を具体的に指定する必要がありますがGWT.create
、デフォルトのコンストラクターでのみ機能し、「再バインド規則」はそれほど正確である必要はなく、新しいクラスをコンパイル時に作成されます。また、ユーザーが実行している環境を確認し、それに基づいて特定のルール セットを選択することもできますが、これは Gin では実行できません。
Gin は実際にGWT.create
これらの他の機能を取得するために利用します - ルールが定義されていない場合、Gin はGWT.create
自動的に呼び出します。これは、次のようなルールがある場合を意味します
@Inject MyRemoteServiceAsync rpcService;
Gin はGWT.create
その rpc 呼び出しを構築するために呼び出します。これは、UiBinder、エディター ドライバー、I18n メッセージおよび定数などでも機能します。
既に Guice を理解し気に入っているのであれば、Gin は大きな一歩ではないはずです。GWT.create を直接呼び出すことも、Gin に暗黙のうちにそれを実行するように依頼することもできます。GWT.create(MyGinjector.class)
実際、ジンを使用するためにも、ボールを転がすためにコールする必要があります。
GWT.create()
依存性注入とは何の関係もありません。ファクトリーメソッドです。
との唯一の違いはGWT.create(SomeThing.class)
、いわゆるdeferred bindingnew SomeThing()
を使用して正確なクラスを置換または生成できることです。しかし、たとえば d オブジェクトに依存関係を提供することについては何もありません。SomeThing
GWT.create()
GWT.create()