Javax.injectアノテーションがcom.google.injectの直接の代替として機能できるのは本当ですか?
つまり、現在のguice/ginアノテーションをすべてjavax.injectのアノテーションに置き換えた場合、アプリは正常にコンパイルされて実行されますか?
まず、javax.injectはgoogle.injectがカバーするすべてのベースをカバーしていますか?
はい、問題なく動作します。実際、guiceの作者(Bob Lee)はjavax.inject
仕様。
javax.inject.Inject
にはoptional
属性がないため、オプションの依存関係が必要な場合は、guiceアノテーションを使用する必要があります。
実際、私はjavax.injectへの切り替えを控えることにしました。Guiceが提供するもの(私が使用しているもの)に比べて、仕様が非常にミニマルであるためです。
@Optional
@Bozhoによる言及@ImplementedBy
これは、明示的なバインディングの数を減らしたい場合(コードを明確にするため)、および必要に応じてデフォルトの@ImplementedBy
バインディングを簡単にオーバーライドできるようにする場合(統合テストなど)に非常に役立ちます。 )。おそらく他にもありますが、私にとってこれらの2つはすでに魅力的です。
GuiceのサイトでのJSR-330統合 を参照してください。
質問はかなり古いですが...参考:自動的に apiwaveで確認 できます。
過去の変更を学習することにより、com.google.inject.Inject
をjavax.inject.Inject
に置き換えることができることがわかります。