我有一个库,这是一个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文件。
默认情况下,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