从xml配置中读取spring yml属性

时间:2017-09-07 11:06:45

标签: spring spring-boot

我试图在spring-bean.xml中读取application.yml中的属性,如下所示:

<bean name="#{bean.name}" />

有可能吗?或者我应该指定我的application.yml文件的位置?

1 个答案:

答案 0 :(得分:2)

是的,可能

  

对于YAML属性

  1. 您必须使用 YamlPropertiesFactoryBean

    <bean id="yamlProperties" class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
        <property name="resources" value="classpath:application.yml"/>
    </bean>
    
    <context:property-placeholder properties-ref="yamlProperties"/>
    
  2. 然后在src / main / resource / application.yaml

    中定义您的属性
    bean:
       name: foo
    
  3. 现在使用可以使用xml中的属性来创建bean

    <bean name="${bean.name}"
    class="net.asifhossain.springmvcxml.web.FooBar"/>
    
  4. 这是我的完整XML配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        <bean id="yamlProperties" class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
            <property name="resources" value="classpath:application.yaml"/>
        </bean>
    
        <context:property-placeholder properties-ref="yamlProperties"/>
    
        <bean name="${bean.name}" class="net.asifhossain.springmvcxml.web.FooBar"/>
    </beans>