我不確定我是否很好理解Spring配置文件如何與yaml和屬性文件配合使用。 我試圖misc這兩種類型的配置(這兩個文件不共享任何配置),但我從yaml配置閱讀配置文件時遇到問題。Spring YAML配置文件配置
我正在使用Spring 4.1.1
這是代碼。 這是上下文:屬性佔位符配置:
<context:property-placeholder location="classpath:/job-config.properties" order="1"
ignore-unresolvable="true" ignore-resource-not-found="false"/>
<context:property-placeholder properties-ref="yamlProperties" order="2"
ignore-resource-not-found="false" ignore-unresolvable="true"/>
其中yamlProperties是以下豆
<bean id="yamlProperties"
class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
<property name="resources"
value="file:${catalina.home}/properties/test.yml"/>
</bean>
這裏是test.yml
spring:
profiles.default: default
---
spring:
profiles: default
db:
url: jdbc:oracle:thin:@##hostname##:##port##:##SID##
usr: ##USER##
pwd: ##PWD##
---
spring:
profiles: development
db:
url: jdbc:oracle:thin:@##hostname##:##port##:##SID_DEVELOPMENT##
usr: ##USER_DEVELOPMENT##
pwd: ##PWD_DEVELOPMENT##
我的問題是,當我嘗試通過這樣配置(通過xml)我的數據源:
<property name="url" value="${db.url}"/>
<property name="username" value="${db.usr}"/>
<property name="password" value="${db.pwd}"/>
Spring總是使用YAML文件中的最後一個配置忽略配置文件。我試圖通過web.xml中的contex參數傳遞活動配置文件或直接傳遞給JVM(我實現了一個實現了EnvironmentAware接口的bean來獲取活動/默認配置文件,並且它是相互對應的),它似乎都很好,但是在嘗試注入值將忽略該配置文件。我相信使用屬性佔位符上下文(與訂單)我得到一個屬性佔位符是PropertySourcesPlaceholderConfigurer的一個實例,因此有權訪問環境,但我不明白爲什麼該配置文件被忽略,並且彈簧獲取最後一個yaml文件配置。
我提前
我通過實現我自己的PropertiesFactory解決。我從Spring引導核心(不是來自Spring核心)和SpringProfileDocumentMatcher導入YamlProcessor。我的類還實現了EnvironmentAware.I更改了createProperties()方法以讀取活動配置文件並設置正確的DocumentMatcher。 – Raffaele
這裏是代碼 String [] activeProfiles = env.getActiveProfiles(); if(activeProfiles.length == 0){ this。setMatchDefault(真); this.setDocumentMatchers(new SpringProfileDocumentMatcher()); } else { this.setMatchDefault(false); SpringProfileDocumentMatcher matcher = new SpringProfileDocumentMatcher(); for(String profile:activeProfiles){ matcher.addActiveProfiles(profile); } this.setDocumentMatchers(matcher); } – Raffaele
我遇到過類似的問題。以下是我如何解決它:https://stackoverflow.com/questions/47717871/spring-boot-profiles-ignored-in-propertysourcesplaceholderconfigurer-loaded-fil – James