タグ付けされた質問 「dependency-injection」

機能させる必要のあるソフトウェアコンポーネントの依存関係を動的に挿入することにより、コンポーネント間の結合を減らす設計パターン。

9
Dependency Injectionコンストラクターの狂気を避ける方法は?
私のコンストラクターは次のようになり始めています: public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) パラメータリストは増え続けています。「コンテナ」は依存関係注入コンテナなので、なぜこれを実行できないのですか。 public MyClass(Container con) すべてのクラスで?欠点は何ですか?これを行うと、私は栄光のスタティックを使用しているように感じます。IoCと依存性注入の狂気についてのあなたの考えを共有してください。

17
アノテーションを使用して構成されたSpring Beanにプロパティ値を注入するにはどうすればよいですか?
私は注釈を介してクラスパスから取得された一連のSpring Beanを持っています。 @Repository("personDao") public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao { // Implementation omitted } Spring XMLファイルでは、PropertyPlaceholderConfigurerが定義されています。 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="/WEB-INF/app.properties" /> </bean> 上記のbeanにapp.properitesからプロパティの1つを注入したいと思います。私は単純に次のようなことはできません <bean class="com.example.PersonDaoImpl"> <property name="maxResults" value="${results.max}"/> </bean> PersonDaoImplはSpring XMLファイルでは機能しないため(注釈を介してクラスパスから取得されます)。私は次のようにしています: @Repository("personDao") public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao { @Resource(name = "propertyConfigurer") protected void setProperties(PropertyPlaceholderConfigurer ppc) …


23
MockitoモックをSpring Beanに注入する
JUnitでのユニットテストの目的で、MockitoモックオブジェクトをSpring(3+)Beanに挿入したいと思います。現在、私のBeanの依存関係は@Autowired、プライベートメンバーフィールドのアノテーションを使用して注入されています。 使用を検討しましたReflectionTestUtils.setFieldが、注入したいBeanインスタンスは実際にはプロキシであるため、ターゲットクラスのプライベートメンバーフィールドを宣言していません。テストのためだけにインターフェイスを変更するため、依存関係へのパブリックセッターを作成したくありません。 私はSpringコミュニティからのアドバイスに従いましたが、モックが作成されず、自動配線が失敗します。 <bean id="dao" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg value="com.package.Dao" /> </bean> 現在発生しているエラーは次のとおりです。 ... Caused by: org...NoSuchBeanDefinitionException: No matching bean of type [com.package.Dao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: { @org...Autowired(required=true), @org...Qualifier(value=dao) } at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901) at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770) constructor-arg値を無効な値に設定しても、アプリケーションコンテキストの起動時にエラーは発生しません。

4
Dependency Inject(DI)「フレンドリーな」ライブラリ
私は、いくつかの異なる高水準関数を持つC#ライブラリの設計について考えています。もちろん、これらの高水準関数は、可能な限りSOLIDクラスの設計原則を使用して実装されます。そのため、コンシューマが定期的に直接使用することを目的としたクラスと、より一般的な「エンドユーザー」クラスの依存関係である「サポートクラス」が存在する可能性があります。 問題は、ライブラリを設計する最良の方法は何ですか? DIに依存しない-1つまたは2つの一般的なDIライブラリ(StructureMap、Ninjectなど)に基本的な「サポート」を追加するのは妥当なようですが、コンシューマが任意のDIフレームワークでライブラリを使用できるようにしたいと思います。 非DI使用可能-ライブラリのコンシューマーがDIを使用していない場合でも、ライブラリは可能な限り使いやすく、これらの「重要でない」依存関係をすべて作成するためにユーザーが実行する必要がある作業量を削減する必要があります。彼らが使いたい「本物の」クラス。 私の現在の考えは、一般的なDIライブラリー(たとえば、StructureMapレジストリー、Ninjectモジュール)にいくつかの「DI登録モジュール」、および非DIであり、これらのいくつかのファクトリーへのカップリングを含むセットまたはファクトリー・クラスを提供することです。 考え?

21
NodeJSで依存性注入が必要ですか、それともどう対処すればよいですか?
現在、nodejsを使用していくつかの実験プロジェクトを作成しています。私は多くのJava EE WebアプリケーションをSpringでプログラミングしており、依存関係の注入が容易であることを高く評価しています。 今私は興味があります:ノードで依存関係注入をどのように行うのですか?または:私も必要ですか?プログラミングスタイルが異なるため、置き換えの概念はありますか? これまでは、データベース接続オブジェクトの共有などの簡単なことについて話していましたが、満足できる解決策が見つかりませんでした。

5
5歳児への依存性注入を説明するには?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 依存性注入を説明する良い方法は何ですか? Googleでいくつかのチュートリアルを見つけましたが、読者が単なるJava初心者であると想定するチュートリアルはありませんでした。これを初心者にどのように説明しますか?

19
ASP.NET Core Dependency Injectionエラー:アクティブ化を試みている間、タイプのサービスを解決できません
.NET Core MVCアプリケーションを作成し、依存性注入とリポジトリパターンを使用して、リポジトリをコントローラーに注入しました。ただし、エラーが発生します。 InvalidOperationException:「WebApplication1.Controllers.BlogController」をアクティブ化しようとしているときに、タイプ「WebApplication1.Data.BloggerRepository」のサービスを解決できません。 モデル(Blog.cs) namespace WebApplication1.Models { public class Blog { public int BlogId { get; set; } public string Url { get; set; } } } DbContext(BloggingContext.cs) using Microsoft.EntityFrameworkCore; using WebApplication1.Models; namespace WebApplication1.Data { public class BloggingContext : DbContext { public BloggingContext(DbContextOptions<BloggingContext> options) : base(options) { } public …

10
パラメータを渡すJavaFX FXML
javafxでセカンダリウィンドウにパラメーターを渡すにはどうすればよいですか?対応するコントローラーと通信する方法はありますか? 例:ユーザーがから顧客を選択するTableViewと、新しいウィンドウが開き、顧客の情報が表示されます。 Stage newStage = new Stage(); try { AnchorPane page = (AnchorPane) FXMLLoader.load(HectorGestion.class.getResource(fxmlResource)); Scene scene = new Scene(page); newStage.setScene(scene); newStage.setTitle(windowTitle); newStage.setResizable(isResizable); if(showRightAway) { newStage.show(); } } newStage新しいウィンドウになります。問題は、コントローラーに顧客の情報を探す場所を(IDをパラメーターとして渡すことによって)指示する方法が見つからないことです。 何か案は?

5
キャッスルウィンザーとは何ですか?なぜ気にする必要がありますか?
私は長年のWindows開発者で、win32と初期のCOMに夢中です。2001年から.NETを使用しているため、C#とCLRにかなり精通しています。Stack Overflowに参加し始めるまで、Castle Windsorについて聞いたことはありませんでした。Castle Windsorの「Getting Started」ガイドを読みましたが、クリックしていません。 この古い犬に新しいトリックを教え、Castle Windsorをエンタープライズアプリに統合する理由を教えてください。

7
誰かがMicrosoft Unityを説明できますか?
Unityに関するMSDNの記事(依存性注入、制御の反転)を読んでいますが、簡単な用語(または簡単な例)で説明する必要があると思います。私はMVPCパターンに精通しています(ここではそれを使用しています)が、まだこのUnityのことを本当に理解できていないので、アプリケーション設計の次のステップだと思います。

14
コンストラクターまたはプロパティセッターによる依存性注入?
私はクラスをリファクタリングし、それに新しい依存関係を追加しています。クラスは現在、コンストラクターで既存の依存関係を取得しています。そこで、一貫性を保つために、パラメーターをコンストラクターに追加します。 もちろん、いくつかのサブクラスに加え、ユニットテスト用のサブクラスもあります。そのため、すべてのコンストラクターを一致させるように変更するゲームをプレイしています。これには時間がかかります。 依存関係を取得するには、セッターでプロパティを使用する方がよいと思います。注入された依存関係は、クラスのインスタンスを構築するためのインターフェースの一部であるべきではないと思います。依存関係を追加すると、すべてのユーザー(サブクラスと直接インスタンス化するユーザー)が突然それを認識します。それはカプセル化の中断のように感じます。 これはここにある既存のコードのパターンではないようです。そのため、コンストラクタとプロパティの一般的なコンセンサス、長所と短所を調べています。プロパティセッターを使用する方が良いですか?

5
DIコンテナーを介して作成されたオブジェクトを初期化するためのパターンはありますか
Unityにオブジェクトの作成を管理させようとしているのですが、実行時までわからないいくつかの初期化パラメーターが必要です。 現時点で私がそれを行う方法を考えることができる唯一の方法は、インターフェイスにInitメソッドを持つことです。 interface IMyIntf { void Initialize(string runTimeParam); string RunTimeParam { get; } } 次に、それを(Unityで)使用するには、次のようにします。 var IMyIntf = unityContainer.Resolve<IMyIntf>(); IMyIntf.Initialize("somevalue"); このシナリオでは、runTimeParamparamはユーザー入力に基づいて実行時に決定されます。ここでの些細なケースは単にの値を返しますrunTimeParamが、実際にはパラメーターはファイル名のようなものであり、initializeメソッドはファイルに対して何かを行います。 これにより、多くの問題が発生します。つまり、このInitializeメソッドはインターフェースで使用でき、複数回呼び出すことができます。実装にフラグを設定し、を繰り返し呼び出したときに例外をスローするのInitializeは、かなり不格好です。 インターフェイスを解決する時点では、の実装について何も知りたくありませんIMyIntf。しかし、私が欲しいのは、このインターフェースが特定の1回の初期化パラメーターを必要とするという知識です。オブジェクトを作成するときに、何らかの方法でこの情報を使用してインターフェイスに注釈(属性)を付け、それらをフレームワークに渡す方法はありますか? 編集:インターフェースについてもう少し説明しました。


3
Angular.jsで他の人に注入できる「もの」は何ですか?
AngularのDependency Injectionを理解するのに少し苦労しています。だから私の質問は、コントローラ、ファクトリ、プロバイダなどの「タイプ」のどれを、同じ「タイプ」の他のインスタンスを含めて他の人に注入できるのか誰でも説明できますか? 私が実際に探しているのは、このテーブルにy / nが入ったものです。同じ行/列のセルの場合、これはある「タイプ」の値を同じ「タイプ」の別の「タイプ」に注入することを意味します +----------------+----------+------------+-----------+---------+--------+----------+---------+-------+ | Can we inject? | Constant | Controller | Directive | Factory | Filter | Provider | Service | Value | +----------------+----------+------------+-----------+---------+--------+----------+---------+-------+ | Constant | | | | | | | | | | Controller | | | | | | | | | …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.