当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:PropertySourcesPlaceholderConfigurer加载文件中忽略的配置文件

颛孙钱青
2023-03-14

我有一个库,这是一个Spring Boot项目。该库有一个library.yml文件,其中包含用于其配置的dev和prod道具:

---
spring:
    profiles: 
        active: dev
---
spring:
    profiles: dev
env: dev
---
spring:
    profiles: prod
env: prod
@Bean
public static PropertySourcesPlaceholderConfigurer dataProperties() {
  PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
  YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
  yaml.setResources(new ClassPathResource("library.yml"));
  propertySourcesPlaceholderConfigurer.setProperties(yaml.getObject());
  return propertySourcesPlaceholderConfigurer;
}
---
spring:
    profiles: 
        active: dev

但是当我检查env的值时,我得到的是“prod”。为什么?

我如何告诉Spring Boot使用library.yml中的活动(例如dev)配置文件道具?

注意:我更喜欢使用。yml而不是。properties文件。

共有1个答案

令狐宏浚
2023-03-14

默认情况下,PropertySourcesPlaceHolderConfigurer对仅获取配置文件特定的道具一无所知。如果在env等文件中多次定义了一个道具,它将绑定与该道具的最后一次出现相关联的值(在本例中为prod)。

要使其绑定匹配特定配置文件的道具,请设置配置文件文档匹配器。概要文件匹配器将需要知道可以从环境中获得的活动概要文件。代码如下:

@Bean
public static PropertySourcesPlaceholderConfigurer dataProperties(Environment environment) {
  PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
  YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
  SpringProfileDocumentMatcher matcher = new SpringProfileDocumentMatcher();
  matcher.addActiveProfiles(environment.getActiveProfiles());
  yaml.setDocumentMatchers(matcher);
  yaml.setResources(new ClassPathResource("library.yml"));
  propertySourcesPlaceholderConfigurer.setProperties(yaml.getObject());
  return propertySourcesPlaceholderConfigurer;
}
 类似资料:
  • 下面是我的pom.xml: 在Entourage-0.0.1-snapshot.jar中,config.properties位于根,其内容与上面相同(即localhost)。 我不是在胡编乱造!

  • 通过参考关于在,我想知道当文件不存在时如何忽略。 目前,下面的文件抛出FileNot找到异常,无法继续编译。 我想要的是让开发者编译。属性是否存在。我怎样才能做到这一点?

  • 我在使用Spring Boot配置文件和时遇到了这个奇怪的问题: 如果我使用此设置,则一切都是正确的: 我尝试了几种变通方法: > 为了安全,我使用以下属性禁用了它: 但是,我无法禁用Redis会话。我已经尝试了以下操作: 这也是:但没有成功。 编辑:这是初始化Redis时显示的stacktrace(此配置文件不需要它):

  • 本文向大家介绍Android Studio 配置忽略文件的方法实现,包括了Android Studio 配置忽略文件的方法实现的使用技巧和注意事项,需要的朋友参考一下 简介 当我们在进行上传代码到Git、SVN仓库时,通常需要先配置忽略文件,这样主要是方便上传的代码下载的时候不会与编译器和Gradle的版本发生冲突,能够保证下载的代码能正常运行。 操作步骤 打开Android Studio中的Fi