うまく機能するSpring構成ファイルを作成しました。
次のステップは、ユーザー構成プロパティをシステムプロパティから分離することでした。
ユーザーが構成するBeanを使用して追加のxmlファイルを作成することにしました。
実際のクラスのBeanで使用されるプロパティをカプセル化するような論理Beanをいくつか作成するのに問題がありました。
私はネット上でそのような方法で財産を参照するオプションを見つけました:
UserConf.xml
<bean id="numberGuess" class="x...">
<property name="randomNumber" value="5"/>
<!-- other properties -->
</bean>
SystemConf.xml
<import resource="UserConf.xml" />
<bean id="shapeGuess" class="y...">
<property name="initialShapeSeed" value="#{ numberGuess.randomNumber }"/>
<!-- other properties -->
</bean>
しかし、私の問題は、x...
クラスがまったく初期化されるべきではない論理的なものである必要があり、システムのクラス階層の情報を開示したくないということです。これは、構成xmlファイルのみを使用する必要があるためです。
Solution1は、このプロパティを表すJavaオブジェクトを作成することです。
public class MyProps(...)
そして、Springシステム構成にBeanの親を追加します。
<bean id="MyProps" class="path to MyProps"/>
ユーザー側で、前のBeanを次のように変更します。
<bean id="numberGuess" parent="MyProps">
<property name="randomNumber" value="5"/>
<!-- other properties -->
</bean>
Solution2は、Database.propsと同じようにフラット構成ファイルを使用し、ファクトリを使用してロードすることです。
Solution3は、Spring Property Placeholder構成を使用してXMLプロパティファイルからプロパティをロードすることです(例)が、ここでは、プロパティのより複雑なネストされた構造を取得する方法がわかりません(プロパティは異なる論理名で区切る必要があります。 minNumberは、xAlgoとyalgoの両方で定義されます)。
この問題に対処するため、またはユーザー構成をフラットな小道具ファイルに移動するためだけに新しいJavaクラスを作成するのは好きではありません(xml構造が必要です)、他の解決策はありますか?