2011-08-03 11 views
1

com.google.inject。*の代わりにJSR-330 javax.inject。*アノテーションを使用しています。 JSR-330標準には私がGuiceで好きになったいくつかの機能は含まれていないようです。@Assistedに相当するjavax.inject。*があります

特に、@Assistedキーワードはサポートされていません。また、@AssistedInjectはどうですか? @Injectは複数のコンストラクタに置くことができますか?

私はベンダーニュートラルであることに興味がありますが、便利な機能ではありません。どんな勧告?ご質問の1への答えで

+0

JSR-330はAPIであり、実装ではありません。 –

+0

私はそれがAPIだけであることを理解します。しかし、@Assistedの使用は私たちのソースコード全体に埋め込まれます。 APIの一部でない場合は、必要に応じて「別のDIフレームワークに切り替える」ことができません。私は春についてよく分かりませんが、私はそれがこの仕事を達成するために根本的に異なるアプローチを取っていると仮定しています。 – scubadev

+0

これはAPIの一部ではありません。真のDIフレームワークの独立性が必要な場合は、厳密にAPIにコードを記述する必要があります。 –

答えて

4

@AssistedはGuice-onlyです。 JSR 330の@Injectで使用できます。 Guiceの依存関係が必要ない場合は、コードでファクトリインターフェイスを実装して手動での補助を行います。

+0

これはあまりにも悪く、おそらくJSRの将来の改訂版に含まれるでしょう。 – scubadev

0

は、複数のコンストラクタの上に置くことができ@Injectですか? javadoc

注射コンストラクタから

は@Injectで注釈及び引数としてゼロ又は 複数の依存関係を受け入れるされています。 @Injectはクラスごとに最大1つの コンストラクタに適用できます。

だから私は答えがノーだと思う。

関連する問題