タグ付けされた質問 「google-guice」

4
なぜ依存性注入のためのフレームワークが必要なのですか?[閉まっている]
Inversion of Controlの原則とDependency Injectionをその実装としてさらに読んでいますが、それを理解していると確信しています。 基本的に「クラス内でクラスメンバーのインスタンス化を宣言しない」と言っているようです。むしろ、インスタンス化はコンストラクターに渡され、コンストラクターを通じて割り当てられる必要があります。外部ソースからクラスに「注入」されました。 それがそうであるように思えるこの単純な場合、注釈を使用してこれを実装するspringやguiceのようなフレームワークが必要なのはなぜですか?ここに基本的なものがありませんか?Dependency Injectionフレームワークの使用方法を理解するのに本当に苦労しています。 編集:可能性のある重複について、私の質問はSpringだけでなく一般的なDIフレームワークについて尋ねているため、よりユニークだと思います。Springは単なるDIフレームワークではないため、DIに関係のないSpringを使用したい理由はたくさんあります。

2
コードベースを依存性注入コンテナに徐々に移動する
多くの「アンチパターン」シングルトンを備えた大規模なコードベース、静的メソッドを含むユーティリティクラス、およびnewキーワードを使用して独自の依存関係を作成するクラスがあります。コードのテストが非常に困難になります。 依存性注入コンテナ(プロジェクトのGuice場合はGWT)にコードを徐々に移行したいと考えています。依存性注入についての私の理解から、それは全部かゼロかです。すべてのクラスは、Spring / Guiceによって管理されるか、まったく管理されません。コードベースが大きいので、コードを一晩で変換できません。ですから、徐々にそれを行う方法が必要です。 問題は、他のクラスに注入する必要のあるクラスから始めると、@Injectそれらのクラスがまだコンテナーによって管理されていないため、それらのクラスでシンプルを使用できないことです。したがって、これはどこにも挿入されない「トップ」クラスまでの長いチェーンを作成します。 私が見る唯一の方法は、Injector/アプリケーションコンテキストをシングルトンを通じてグローバルに利用できるようにすることです。これにより、他のクラスがそこからマネージドBeanを取得できるようになります。しかし、それcomposition rootはアプリケーションに明らかにしないという重要な考えと矛盾します。 もう1つのアプローチはボトムアップです。「高レベル」クラスから始めて、依存関係注入コンテナーにそれらを含め、ゆっくりと「小さい」クラスに移動します。しかし、まだグローバル/スタティックに依存しているこれらの小さなクラスをテストできるので、私は長い間待たなければなりません。 このような段階的な移行を実現する方法は何でしょうか? PS 依存性注入への段階的アプローチという質問はタイトルは似ていますが、私の質問には答えません。

4
DIフレームワークはどのような複雑さを追加しますか?
非常に最近の質問に対する現在最も支持されている回答は、 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がそれを適切に呼び出すようにします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.