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