6

GWT には独自の DI メカニズムが組み込まれているようです ( GWT.create(Class<?>))。これに加えて、GINはどのような利点を提供しますか? それらを互いに組み合わせて使用​​する必要がありますか、それとも相互に排他的ですか? 私は Guice が好きなので、GIN を使用したくなりますが、GWT がすぐに同じことを行うのであれば、GIN を導入したくありません。

4

2 に答える 2

8

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)実際、ジンを使用するためにも、ボールを転がすためにコールする必要があります。

于 2012-10-23T13:14:42.527 に答える
8

GWT.create()依存性注入とは何の関係もありません。ファクトリーメソッドです。

との唯一の違いはGWT.create(SomeThing.class)、いわゆるdeferred bindingnew SomeThing()を使用して正確なクラスを置換または生成できることです。しかし、たとえば d オブジェクトに依存関係を提供することについては何もありません。SomeThingGWT.create()GWT.create()

于 2012-10-23T14:02:32.360 に答える