DIコンテナーは「エンタープライズソフトウェア」パターンであり、オブジェクトグラフが非常に大きく複雑な場合に使用されます。アプリケーションの95%はそれを必要としないと思います。
これは私が強く反対することです。多分私は間違った用語を持っているかもしれませんが、私にとってDIフレームワークは単に「オブジェクトを一緒に配線する何か」を意味します。何か不足していますか?
非常に小さなプロジェクト(10クラスなど)でも、それらを簡略化するためにGuiceを使用しています。確かに、400 kBのJARファイルですが、これは私が気にすることではありません。小規模なプロジェクトの場合、設定はほとんど必要なく、唯一の「オーバーヘッド」は注釈の追加です。@Inject
それで、私は本当に不思議に思います、DIフレームワークはどんな追加された複雑さを引き起こしますか?
回答への対応を更新
82クラスのプロジェクトでは、
- 32
@Inject
注釈 - 15
@Singleton
と1の@ProvidedBy
注釈 - 4プロバイダー(これらはすべて私の工場であるため、DIなしでも必要です)
- 1つの行を含むモジュール
- 0行XML !!!
それで全部です。確かに、それは小さなプロジェクトですが、まさにこれが私のポイントでした。追加の作業は、行ではなく数語でした。
不変の「使いやすい」オブジェクトを取得するために、コンストラクター注入のみを使用しています。新しい依存関係が出現するたびに、最終フィールドを追加し、LombokのRequiredArgsConstructorが宣言を処理するようにし、Guiceがそれを適切に呼び出すようにします。