Java 包含/排除Springbean属性列表值节点
我希望基于系统属性,即${env},有条件地/动态地显示SpringXML配置中的Java 包含/排除Springbean属性列表值节点,java,xml,spring,Java,Xml,Spring,我希望基于系统属性,即${env},有条件地/动态地显示SpringXML配置中的classpath:/resources/three.sqlvalue节点。类似于,如果${env}是dev,则包含它,否则排除它,或者如果这不容易,则只需有条件地从系统属性传入所有值节点。这可能吗 <bean id="myBean" class="com.testMyBean"> <property name="scripts">
classpath:/resources/three.sql
value节点。类似于,如果${env}是dev,则包含它,否则排除它,或者如果这不容易,则只需有条件地从系统属性传入所有值节点。这可能吗
<bean id="myBean"
class="com.testMyBean">
<property name="scripts">
<list>
<value>classpath:/resources/one.sql</value>
<value>classpath:/resources/two.sql</value>
<value>classpath:/resources/three.sql</value>
</list>
</property>
</bean>
classpath:/resources/one.sql
classpath:/resources/two.sql
classpath:/resources/three.sql
您可以使用Spring有条件地包含bean
添加具有指定概要文件的bean
包装器元素:
<beans profile="dev">
<bean id="myBean" class="com.testMyBean">
<property name="scripts">
<list>
<value>classpath:/resources/one.sql</value>
<value>classpath:/resources/two.sql</value>
<value>classpath:/resources/three.sql</value>
</list>
</property>
</bean>
</beans>
要指定应用程序的默认配置文件,可以在web.xml
文件中设置上下文参数:
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>openshift</param-value>
</context-param>
spring.profiles.default
openshift
您可以使用Spring有条件地包含bean
添加具有指定概要文件的bean
包装器元素:
<beans profile="dev">
<bean id="myBean" class="com.testMyBean">
<property name="scripts">
<list>
<value>classpath:/resources/one.sql</value>
<value>classpath:/resources/two.sql</value>
<value>classpath:/resources/three.sql</value>
</list>
</property>
</bean>
</beans>
要指定应用程序的默认配置文件,可以在web.xml
文件中设置上下文参数:
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>openshift</param-value>
</context-param>
spring.profiles.default
openshift
如上所述,使用配置文件的最佳方法
您可以使用多个xml文件,其中文件名是参数化的${env}变量
根xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
<import resource="classpath:etc/abc-${env}.xml" />
...
<beans
如上所述,最好的方法是使用配置文件
您可以使用多个xml文件,其中文件名是参数化的${env}变量
根xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
<import resource="classpath:etc/abc-${env}.xml" />
...
<beans
是否有一种方法可以接受配置文件作为默认配置文件,从而不在该环境中提供-Dspring.profiles.active,并且spring会选择该配置文件?@c12请参阅更新。这只是web.xml
中的上下文参数。我在部署到open shift cloud时使用了这一点。我在GitHub上有这段代码供审查:我的目标是只在用户本地环境中包含特定的脚本,而不是在任何测试或生产应用程序服务器上。我更愿意以某种方式从.properties文件加载脚本,因为我们已经需要为其他事情这样做了。是否可以基于.properties文件值创建配置文件?@c12我认为这是不可能的,请参阅:是否有一种方法可以接受配置文件作为默认值,从而不在该环境中提供-Dspring.profiles.active,并且spring会拾取该配置文件?@c12请参阅更新。这只是web.xml
中的上下文参数。我在部署到open shift cloud时使用了这一点。我在GitHub上有这段代码供审查:我的目标是只在用户本地环境中包含特定的脚本,而不是在任何测试或生产应用程序服务器上。我更愿意以某种方式从.properties文件加载脚本,因为我们已经需要为其他事情这样做了。是否可以基于.properties文件值创建配置文件?@c12我认为这是不可能的,请参阅: