我使用spring boot 1.4.2,現在嘗試設置屬性。Spring Boot如何在yaml的application.properties中設置spring.config.location
我有四個病例的使用的.properties和.yml到外部(內部資源)和本地文件系統(外項目文件夾)。
的的.properties外部(內部資源文件夾)效果很好既@Value($ {} property.name)和@PropertySource最後一個使用價值屬性可以從文件系統加載像下面。
@Component
@PropertySource(value="file:C:\\properties\\application-dev.properties")
@PropertySource(value="file:C:\\properties\\application-test.properties")
public class ExternalProperties {
// ...
}
但.yml沒有行之有效的資源文件夾下時,文件名「application.yml」
的.yml可以通過@ConfigurationProperties和需要「propdeps-插件」加載
我.yml文件
environments:
dev:
url: http://dev.bar.com
name: Developer Setup
prod:
url: http://foo.bar.com
name: My Cool App
此代碼工作得很好
@Component
// external(inside resources)
@ConfigurationProperties(prefix="environments")
// outside project folder
@ConfigurationProperties(locations={"file:C:\\properties\\application.yml"}, prefix = "environments")
public class YamlProperties {
private Map<String, String> dev = new HashMap<>();
private Map<String, String> prod = new HashMap<>();
public Map<String, String> getDev() {
return this.dev;
}
public Map<String, String> getProd() {
return this.prod;
}
}
該代碼具有棄用位置屬性(我看了很多文章,但無法弄清楚清楚),所以我需要找到API文檔,找到「ConfigFileApplicationListener」從這個section問題。
# SPRING CONFIG - using environment property only (ConfigFileApplicationListener)
spring.config.location= # Config file locations.
spring.config.name=application # Config file name.
因此,在application.properties這樣的屬性上面寫上。
spring.config.location=file:C:\\properties\\application.yml
spring.config.name=application
和重裝.yml屬性(我沒有嘗試EXCUTE罐子。我用通過控制器戰爭和測試)
@Component
@ConfigurationProperties(prefix="environments")
public class YamlProperties {
private Map<String, String> dev = new HashMap<>();
private Map<String, String> prod = new HashMap<>();
public Map<String, String> getDev() {
return this.dev;
}
public Map<String, String> getProd() {
return this.prod;
}
}
此代碼不是從本地文件加載.yml系統C:驅動器,但是當在資源文件夾中添加application.yml文件時效果很好。
那麼如何設置spring.config.location負載.yml
而且我想知道爲什麼位置屬性適用尚未雖然自1.4版本棄用。
並想知道如何使用ConfigFileApplicationListener我無法跟蹤代碼很難理解給一些提示〜!
編輯:
我想念明白這個,當戰爭再次啓動,使 的上下文中再使用本地文件系統屬性。這不是 收集鏈接它,但仍然爲未來的步驟。
將tomcat重啓不是戰爭部署新的,所以我對 本地系統中的文件也包含屬性,如果我改變這個文件的數據,當tomcat的重啓 可以udated屬性的環境。
爲什麼我繼續嘗試這個工作,我使用公共github帳戶,並保護 連接數據庫信息的其他東西。我得到這個東西,然後繼續下一個 問題,如git-encrpt,spring-cloude,nginx,docker。謝謝你真的幫助 任何幫助。
你最好試試'bootstrap.yml'配置並指定你想要的配置。比如'spring.config.location'。如果你使用'bootstrap.yml',請記住添加'org.springframework.cloud:spring-cloud-context'的依賴關係。爲了簡單起見,'spring-cloud-context'會自動加載'bootstrap.yml',並且配置也可以自動加載。另一種方法是通過'-Dspring.config.location ='或'--spring.config.location ='等命令行參數指定。前格式的參數應該出現在'-jar'選項之前。 –
實際上,'yml'擴展名通常被用在Spring框架中,而不是'yaml'。最簡單的方法是將你的引導配置文件命名爲'bootstrap.yml'在你的'resources'文件夾中。示例[https://github.com/soiff-spring/spring-boot-example.git](https://github.com/soiff-spring/spring-boot-example.git)可以做一些幫助。 –
感謝春天的雲信息我會嘗試下一步,我更新名稱yaml到yml,但仍然不起作用。感謝您的新信息@GeminiKeith –