[英]Spring reference a property from a property bean
我创建了一个运行良好的弹簧配置文件。
我的下一步是将用户配置属性与系统属性分开。
我已决定使用将由用户配置的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和y算法下定义。
我不喜欢创建新的Java类只是为了处理这个问题或者将我的用户配置移动到一个扁平的道具文件(我需要xml结构),是他们的任何其他解决方案?
我会回答我自己的问题,因为它看起来对我来说是最好的解决方案(比建议的更简单)
我将使用PropertiesFactoryBean为我做的工作:
例如
UserConf.xml
<bean id="numberGuess" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="randomNumber">3</prop>
<!-- other properties -->
</bean>
SystemConf.xml
<import resource="UserConf.xml" />
<bean id="shapeGuess" class="y...">
<property name="initialShapeSeed" value="#{ numberGuess.randomNumber }"/>
<!-- other properties -->
</bean>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.