Java 包含/排除Springbean属性列表值节点

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">

我希望基于系统属性,即${env},有条件地/动态地显示SpringXML配置中的
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我认为这是不可能的,请参阅: