web-dev-qa-db-ja.com

com.google.injectをjavax.injectで置き換える

Javax.injectアノテーションがcom.google.injectの直接の代替として機能できるのは本当ですか?

つまり、現在のguice/ginアノテーションをすべてjavax.injectのアノテーションに置き換えた場合、アプリは正常にコンパイルされて実行されますか?

まず、javax.injectはgoogle.injectがカバーするすべてのベースをカバーしていますか?

48
Blessed Geek

はい、問題なく動作します。実際、guiceの作者(Bob Lee)はjavax.inject仕様。

javax.inject.Injectにはoptional属性がないため、オプションの依存関係が必要な場合は、guiceアノテーションを使用する必要があります。

41
Bozho

実際、私はjavax.injectへの切り替えを控えることにしました。Guiceが提供するもの(私が使用しているもの)に比べて、仕様が非常にミニマルであるためです。

  • @Optional @Bozhoによる言及
  • @ImplementedByこれは、明示的なバインディングの数を減らしたい場合(コードを明確にするため)、および必要に応じてデフォルトの@ImplementedByバインディングを簡単にオーバーライドできるようにする場合(統合テストなど)に非常に役立ちます。 )。

おそらく他にもありますが、私にとってこれらの2つはすでに魅力的です。

11
jfpoilpret

GuiceのサイトでのJSR-330統合 を参照してください。

6
Tom

質問はかなり古いですが...参考:自動的に apiwaveで確認 できます。

過去の変更を学習することにより、com.google.inject.Injectjavax.inject.Injectに置き換えることができることがわかります。

4
apiwave