相が異なる段階的なアプリケーションコンテキストを想像してみてください。必要なインフラストラクチャを定義するための初期段階から始めます。 xmlアプリケーションコンテキストは順番に読み込まれます。Springアプリケーションコンテキストですでに定義されているリストとマップを拡張する方法は?
これらのファイルを分割する理由は、拡張機能/プラグインのメカニズムです。
ステージ01-デフォルト-configuration.xmlの
私たちは、準備したデータと、後でそれらを強化するために、ID exampleMapping
でマップを宣言します。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="[...]">
<util:map id="exampleMapping" />
</beans>
ステージ02-カスタム-configuration.xmlの(オプション)
我々はexampleMapping
を設定し、エントリを追加します。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="[...]">
<util:map id="exampleMapping">
<entry key="theKey" value="theValue" />
</util:map>
</beans>
ステージ03-メーク利用-の-configuration.xmlの(必須)
それはcustomly構成されたか、それはまだ空の宣言マップですだかどうか、定義されたマップexampleMapping
を使用します。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="[...]">
<bean id="exampleService" class="com.stackoverflow.example.ExampleService">
<property name="mapping" ref="exampleMapping" />
</bean>
</beans>
ここでの問題は、それが最初のステージの後exampleMapping
マップにエントリを追加することはできませんということ、です。 SpringはidがexampleMapping
のマップがすでに存在するという例外をスローします。最初の段階を省略すると、マップは宣言されず、3番目の段階では例外を生成するexampleMapping
も解決できません。
どうすればこの問題を解決できますか?私はCollection merging(春のドキュメント)を読むが、これは役に立たなかった。後で値をマップ/リストに追加することは可能ですか?
ありがとうございました!
「最初のステージの後にエントリで拡張することはできません」とはどういう意味ですか? – skaffman
@skaffman:申し訳ありませんが、ftfy。 – codevour