問題タブ [property-injection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring: 外部のインデックス付きプロパティを注入することは可能ですか?
次の application.properties ファイルがあります。
そして、それをリストとしてSpring Beanに注入する方法を探しています-次のようなものです:
org.springframework.beans.factory.BeanCreationException: 'application' という名前の Bean の作成中にエラーが発生しました: 自動配線された依存関係の注入に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.util.List ru.croc.rosstat.csod.store.migrations.cli.Application.contactPoints; です。ネストされた例外は java.lang.IllegalArgumentException: 文字列値 "${cassandra.connection.nodes}" のプレースホルダー 'cassandra.connection.nodes' を解決できませんでした
コンマ区切りの 1 行でホストを指定できることはわかっていますが、それは私が望むものではありません。別のオプションは @ConfigurationProperties を使用することです。これは機能します。しかし、注釈だけでリストを挿入する方法はありますか?
java - NoSQL JUnit @Rule で Spring Data ランダム (埋め込み) Mongo ポートを使用する
現在、Spring Data Mongo リポジトリを使用する統合テスト クラスを作成しようとしています。de.flapdoodle.embed.mongo
依存関係によって提供される組み込みの Mongo インスタンスを使用します。Spring Data のドキュメントでは、この依存関係をプロジェクトに配置するだけでよくEmbedMongoAutoConfiguration
、残りはすべて処理することが指定されています。
今のところは問題ありません。ポートを に設定する0
と、自動構成プロセスが mongo インスタンスを起動するための空きポートを見つけます。
この機能は、他のテスト (私の会社の他のプロジェクトと共に Jenkins CI サーバーで実行される) との衝突を避けるために必要です。
問題が発生しました。各テストメソッドを実行する前に、外部ファイルからテストデータを挿入できるようにしたいと考えています。NoSQL Unit は、単純なメソッド注釈と JUnit を使用してこれを実行できることがわかりました@Rule
。
次に例を示します。
私の問題は@Rule
、基礎となる MongoClient をインスタンス化するためにビルダーで Mongo ポートが必要ですが、@Rule がインスタンス化される時点で、Spring コンテキストが完全に初期化EmbeddedMongoAutoConfiguration
されておらず、ポートがまだ公開されていないことです。
私の質問は、Embedded Mongo 機能を NoSQL Unit で使用したことがある人はいますか?たとえば、Spring コンテキストが初期化された@Rule
後に を作成する方法はありますか?
自分で(静的な方法で)空きポートを見つけて、それをに設定し、Bean をオーバーライドして使用するように@Rule
指示するのは良い考えかどうか疑問に思っていました。または「より簡単な」方法はありますか?EmbeddedMongoAutoConfiguration
IMongodConfig
注:flapdoodleライブラリが、無料のサーバーポートを見つけるためのクラスと静的メソッドを提供し、Springで次のように使用されることを確認しました。
よろしくお願いします!
編集: 先ほど説明した解決策を試してみましたが、うまくいくようですが、まだ少し「冗長」で汚いと思います。
次に、関連する構成クラスで:
c# - Mono.Cecil を使用して、プロパティの自動実装バッキング フィールドを注入します。
もっと怠け者になるには、コードを減らして同じことをしたいだけなので、テストを行いました。いくつかの属性を使用し、mono.cecil を使用して .dll ファイルに il コードを挿入したいだけです。詳細は次のとおりです。 これらをコーディングする場合:
注入後、新しいコードが生成されます(ILSpyによる)(C#コード):
定義コード:
見えませんが、IL コードは問題ありません。
また、定義コードも問題ありません。
しかし、挿入されたコードを実行すると、「NullReferenceException: オブジェクト参照がオブジェクト AssemblyTest.set_Counter (Int32 値) のインスタンスに設定されていません」という例外がスローされます。それで、私にいくつかのヒントを与えることができる人はいますか。
spring - プロパティ注入はSpringの一種の依存性注入ですか?
XML
ジャワ
上記のように、プロパティ「msg」は「setMsg」メソッドによって「this.msg」に注入されます。これは「プロパティ注入」と理解しています。私の知る限り、Spring の DI はクラスを分離するように推進されましたが、上記のコードはプロパティを注入するだけです。また、プロパティ注入は Spring の DI に基づいているのでしょうか。誰かが私を助けてくれることを願っています。
c# - Autofac がプロパティを積極的に注入するのを防ぎますか?
私は単純なクラスを持っています:
Autofacに登録すること:
ファクトリを解決して MyWidget のインスタンスを作成すると:
プロパティ「Something」には、コンストラクタ パラメータとは関係ありませんが、値「test」が割り当てられます。Autofac が最初に到達したプロパティを設定する必要があると考えるのはなぜですか? これを防ぐにはどうすればよいですか?Autofac v4.0.0 を使用しています。