一尘不染

从xml配置读取spring yml属性

spring-boot

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

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

可能吗 ?还是应该指定我的application.yml文件的位置?


阅读 2376

收藏
2020-05-30

共1个答案

一尘不染

是的,有可能

对于YAML属性

  1. 您必须使用 YamlPropertiesFactoryBean

    <bean id="yamlProperties" class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
    <property name="resources" value="classpath:application.yml"/>
    

  2. 然后在src / main / resource / application.yaml中定义您的属性

    bean:
    

    name: foo

  3. 现在使用可以使用xml中的属性创建一个bean

    <bean name="${bean.name}"
    

    class=”net.asifhossain.springmvcxml.web.FooBar”/>

这是我完整的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>
2020-05-30