当前位置: 首页 > 面试题库 >

如何使用YamlPropertiesFactoryBean使用Spring Framework 4.1加载YAML文件?

童铭晨
2023-03-14
问题内容

我有一个Spring应用程序,当前正在使用* .properties文件,但我想使用YAML文件来代替它。

我发现类YamlPropertiesFactoryBean似乎能够满足我的需求。

我的问题是我不确定如何在Spring应用程序中使用此类(使用基于注释的配置)。似乎我应该使用
setBeanFactory方法在PropertySourcesPlaceholderConfigurer中对其进行配置。

以前,我使用@PropertySource加载属性文件,如下所示:

@Configuration
@PropertySource("classpath:/default.properties")
public class PropertiesConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

如何在PropertySourcesPlaceholderConfigurer中启用YamlPropertiesFactoryBean,以便可以直接加载YAML文件?还是有另一种方法?

谢谢。

我的应用程序使用基于注释的配置,而我使用的是Spring Framework
4.1.4。我找到了一些信息,但是它总是像这样的内容使我指向Spring
Boot 。


问题答案:

使用XML config,我一直在使用这种结构:

<context:annotation-config/>

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

<context:property-placeholder properties-ref="yamlProperties"/>

当然,您必须对运行时类路径具有snakeyaml依赖性。

我更喜欢XML配置而不是Java配置,但我认为转换它应该不难。

编辑:
java config为完整性起见

@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
  PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
  YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
  yaml.setResources(new ClassPathResource("default.yml"));
  propertySourcesPlaceholderConfigurer.setProperties(yaml.getObject());
  return propertySourcesPlaceholderConfigurer;
}


 类似资料:
  • 问题内容: 我有一个Spring应用程序,当前正在使用* .properties文件,但我想使用YAML文件来代替它。 我发现类YamlPropertiesFactoryBean似乎能够满足我的需求。 我的问题是我不确定如何在Spring应用程序中使用此类(使用基于注释的配置)。似乎我应该使用 setBeanFactory方法在PropertySourcesPlaceholderConfigure

  • 使用Spring Boot 1.3.0.Release 编辑:一种工作方法是手动操作:

  • 问题内容: 我在玩反射,我想做点东西来加载一个类并打印该类中所有字段的名称。我制作了一个小型的hello world类型的类来检查一些东西: 基于以上所述,我得出两个结论: 它存在于/home/kent/eclipsews/SmallExample/bin/IndependentClass.class 有用!(因此它必须是可以由类加载器加载的正确的.class文件) 然后使用反射的代码:(标记导致

  • 问题内容: 是否可以使用Javascript将CSS样式表导入html页面?如果是这样,怎么办? 附言:JavaScript将托管在我的网站上,但我希望用户能够放入其网站的标签,并且它应该能够将托管在我的服务器上的CSS文件导入当前网页。(css文件和javascript文件都将托管在我的服务器上)。 问题答案: 这是这样做的“老派”方法,希望可以在所有浏览器上使用。从理论上讲,不幸的是,您将使用

  • 考虑以下代码: 我唯一发现的是: dump(Object data)方法接受Java对象并生成YAML文档 和 是只有我一个人,还是文档感觉非常神秘和指定?其中一半是关于我甚至从未听说过的特殊应用。我只看着它就觉得自己很傻,这让我有点生气。 不管怎样;如果你能给我任何帮助,我将不胜感激。

  • 问题内容: 我想保留一个JSON文档来存储一些简单的数据,并且我需要此文档并在调用中使用JSON对象,以便可以使用它。这不是电话。我的意思是应该用于开发,但我确实希望在构建时编译文件,这与API 的实际调用不同,API的内容是动态的。 问题答案: 最简单的方法是为此使用requirejs json插件,这将使您也可以将文件包括在构建中。 https://github.com/millermedei