spring.netのIOC依存関係注入を使用して自分のasp.net Webアプリケーション用のxml構成ファイルを設定しています。私はweb.config内の各設定ファイルを参照しました。 spring.net設定ファイル(settings.xml)の設定例は、複数の設定ファイルでspring.netオブジェクトを再定義する
<object id="obj1"
type="NS.Common.Cache.Class, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My Name" />
</object>
です。
私は複数の環境にWebアプリケーションをインストールしていますので、環境用のspring.net設定ファイルを作成しています。 dev、qa、prod。
したがって、アプリケーションをインストールするときに、該当する環境スプリングファイルがweb.configで参照されます。これは自動インストーラの一部です。私は「OBJ1」上記の目的を再定義したいQA環境ファイル内
、:
<object id="obj1"
type="NS.Common.Cache.Class2, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My New Name" />
</object>
これは、(環境ファイルへの参照を追加する)自動化されているようしかし、settings.xmlファイルがされ変更されません。
そして、同じIDを持つ定義済みのオブジェクトを持つ2つのファイルを参照しています - これは、ランタイムエラーが発生するため、大きな問題を引き起こします。
このオブジェクト定義を強調表示するためにqa.xmlとフラグなどに含めることができる方法は、同じオブジェクトIDを持つ他のXMLファイル内の他の定義済みオブジェクトを上書きしますか?
2つの同一のIDをロードすることができます。これは最初にリストされたオブジェクトを上書きします(AFAIKは別のファイルに存在する必要があります)。によって参照されます。 "グローバル意味"から "ローカル意味"(最後のエントリにapp.configの を持つ)から順にコンテキストリソースを含めるように練習してください。 –
Beachwalker
@Stegi :答えとして提供しないのはなぜですか?OPの問題を解決するように見えます。 – Marijn
* single * xmlファイルでは、 'id'は一度しか指定できません。'id'属性は実際にはxml属性です。そのため、Visual Studioや実行時にファイルを読み込む際に、xmlパーサーによって追加の検証が行われます。しかし、Stegiが言及しているように、同じコンテキストでロードされた異なるファイルに同じIDを持つオブジェクトを指定することができます。最後にロードされたファイルからの定義は、同じidを持つ以前の定義よりも優先されます。 – Marijn