検討している依存性注入フレームワークのリストにSpringを含めることをお勧めします。ここにあなたの質問に対するいくつかの答えがあります:
フレームワークへの結合
ピコ-ピコはセッターインジェクションを思いとどまらせる傾向がありますが、それ以外は、クラスはピコについて知る必要はありません。知る必要があるのは配線だけです(すべてのDIフレームワークに当てはまります)。
Guice -Guiceは標準のJSR330アノテーションをサポートするようになったため、コードにGuice固有のアノテーションは必要ありません。Springはこれらの標準アノテーションもサポートしています。Guiceの人たちが使用する議論は、Guiceアノテーションプロセッサが実行されていなければ、別のフレームワークを使用することにした場合、これらは影響を与えないはずだということです。
Spring -Springは、コード内でSpringフレームワークについて言及されないようにすることを目的としています。他にもたくさんのヘルパー/ユーティリティなどがあるので、Springコードに依存したいという誘惑はかなり強いです。
パフォーマンス
ピコ-私はピコの速度特性にあまり精通していません
Guice -Guiceは高速になるように設計されており、リファレンスに記載されている比較にはいくつかの数値があります。確かに、速度が主な考慮事項である場合は、Guiceを使用するか、手作業で配線することを検討する必要があります
春-春は遅くなる可能性があります。それをより速くするための作業があり、JavaConfigライブラリを使用すると処理が高速化されるはずです。
使いやすさ
Pico-設定が簡単です。Picoは、自動配線の決定を行うことができます。非常に大規模なプロジェクトにどのように拡張できるかは明確ではありません。
Guice-設定は簡単です。注釈を追加し、AbstractModuleから継承するだけで、物事をまとめることができます。構成が最小限に抑えられるため、大規模なプロジェクトに適切に拡張できます。
Spring-設定は比較的簡単ですが、ほとんどの例では、設定方法としてSpringXMLを使用しています。Spring XMLファイルは、時間の経過とともに非常に大きく複雑になり、ロードに時間がかかる可能性があります。これを克服するために、スプリングと手動クランクの依存性注入を組み合わせて使用することを検討してください。
コミュニティの規模
ピコ-小さい
Guice-中
春-大
経験
Pico-私はPicoの経験があまりありませんが、広く使用されているフレームワークではないため、リソースを見つけるのが難しくなります。
Guice -Guiceは人気のあるフレームワークであり、開発で多くのことを再開している大規模なプロジェクトがある場合は、速度に重点を置くことを歓迎します。構成の分散性について懸念があります。つまり、アプリケーション全体がどのようにまとめられているかを確認するのは簡単ではありません。この点では、AOPに少し似ています。
春-春は通常私のデフォルトの選択です。とは言うものの、XMLは煩雑になり、結果として速度低下が煩わしいものになる可能性があります。手作りの依存性注入とSpringを組み合わせて使用することがよくあります。実際にXMLベースの構成が必要な場合、SpringXMLは非常に優れています。Springはまた、他のフレームワークをより依存性注入に適したものにするために多大な努力を払いました。これは、そうするときにベストプラクティスを使用することが多いため、便利です(JMS、ORM、OXM、MVCなど)。
参考文献