[英]How can I use properties from a configuration (properties/yml) file in my Spring Boot application?
[英]How can I specify an external configuration file for a java application that is not spring boot
我已經使用 kotlin 和 gradle 構建了一個控制台 java 應用程序。 gradle 文件創建了一個胖 jar,我可以使用java -jar <project>.jar
從命令行運行它java -jar <project>.jar
包含從中讀取屬性的 application.properties 文件。
我想在命令行上指定應該從某個外部路徑讀取 application.properties 文件。
使用spring boot的時候,我用過
java -jar -Dspring.config.location=somepath/application.properties <project>.jar
這有效。
但它似乎在非彈簧啟動應用程序中不起作用
是否可以在命令行上為非 Spring Boot 應用程序指定外部配置?
Spring boot 在文檔中有一整章處理各種配置方式。
顯然,如果你沒有 spring boot,你應該自己實現類似的東西。
您應該決定的第一件事 - 您需要在哪個級別將配置集成到您的應用程序中:
您只想從命令行讀取鍵/值還是可能依賴於環境變量或系統屬性?
一般來說,你的配置來源是什么:Yaml? 屬性文件? 也許領事或etc.d?
你想創建一個反映你讀過的配置的java對象(就像spring boot中用@ConfigurationProperties
注釋的類一樣嗎?
您是希望僅支持一種配置源還是希望支持各種配置源?
如果您使用 Spring,您是否希望配置屬性自動注入到 bean 中?
如果您打算使用 properties/yaml(例如 spring boot 中的application.properties
)-您想將它們放在哪里? 非 spring 啟動應用程序不會“自動神奇地”讀取它們,您必須實現此邏輯。
您是否打算處理配置文件(非 spring-boot 應用程序仍然支持根據指定的配置文件加載不同 bean 的風格)。
Spring Boot 已經回答了所有這些問題以及更多問題。
如果您在 spring boot 上下文之外運行但仍有 spring 應用程序,則可能需要嘗試以下一些選項:
我猜從 spring 3.1 開始,就有一個@PropertySource
注釋,您可以使用它從類路徑中的文件或文件系統中的某個“位置”中創建 spring 加載屬性。 本文總結了這種方法的用法,並比較了 Spring Boot 與常規 Spring 應用相比,袖子上有什么。 這也是一個很好的教程,涵蓋了常規的 spring 功能。
spring 生態系統之外的東西但仍然有用: apache 通用配置項目。 有一些解決方法可以將其與 spring 應用程序集成,請參見此處
考慮到這里的所有答案,我得出的結論是,雖然可以在非 Spring Boot 的應用程序中啟用外部配置,但確實需要一些努力。 因此我決定在容器中使用 Spring Boot。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.