我创建了一个运行良好的spring配置文件。Spring引用属性bean的属性
我的下一步是将用户配置属性与系统属性分开。
我已决定创建额外的xml文件,这些文件将由用户配置。
我有问题创造一些这样的逻辑封装豆性质将由真正的类的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文件。
解决方法1是创建一个Java对象,它表示此礼节:
public class MyProps(...)
,并在弹簧系统配置中添加一个bean父:
<bean id="MyProps" class="path to MyProps"/>
在用户一侧的改变以前豆成为:
<bean id="numberGuess" parent="MyProps">
<property name="randomNumber" value="5"/>
<!-- other properties -->
</bean>
解决方案2就像使用Database.props一样使用平面配置文件,并使用工厂加载它。
Solution3是利用弹簧特性占位符的配置从XML属性加载属性文件(如example),但在这里,我根本不知道如何获得属性的更复杂的嵌套结构(属性需要分开通过不同的逻辑名称,例如minNumber将在xAlgo和y算法下定义)。
我不喜欢创建新的Java类来处理这个问题或将我的用户配置移动到一个平坦的道具文件(我需要的XML结构),是他们的任何其他解决方案?
凡将在 “X” 级的属性可以用吗? – cowls
对不起,我不清楚为什么你不能只使用属性文件? –
@cowls:在SystemConf文件的不同bean中, – Michael