javascript
Spring Boot – spring.config.name –案例研究
當必須在不同配置中使用相同的應用程序代碼時,外部化Spring Boot應用程序屬性會很有用。 如果spring.config.location配置遠離源代碼(無論如何spring.config.location被認為是最佳實踐), spring.config.location環境屬性可以用于指向帶有屬性文件的目錄位置。 另一方面, spring.config.name可用于更改默認為application的屬性文件的基本名稱。 該文檔顯示為: 如果您不喜歡 application.properties作為配置文件名,則可以切換到另一個 。 但是在什么情況下可以使用spring.config.name 。
(潛在)問題
提供spring.config.location的方法之一是使用環境變量: SPRING_CONFIG_LOCATION 。 將Spring Boot應用程序部署到Tomcat服務器時,這可以被認為是有用的。 當Spring Boot應用程序啟動時,它將從SPRING_CONFIG_LOCATION目錄中選擇application.properties (具有特定于配置文件的屬性文件)。
但是,當將多個Spring Boot應用程序部署到同一Tomcat服務器時會發生什么呢?
在這種情況下,我們可能會期望某些意外的行為,因為其他應用程序也會從SPRING_CONFIG_LOCATION目錄中選擇該application.properties – SPRING_CONFIG_LOCATION ;如果這些應用程序不同,我們可能會遇到麻煩。
(潛在)解決方案
解決此問題的方法之一是在每個應用程序中更改配置基本名稱。
可以使用spring.config.name屬性在servlet初始化程序中以編程方式完成此操作:
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer;public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.properties("spring.config.name:my-app-1").sources(MyApiApplication.class);}}啟動應用程序時,Spring Boot會期望存在my-app-1.properties (具有特定于配置文件的變體,例如my-app-1-test.properties )。 這樣,我們可以使用外部化配置輕松地將多個應用程序部署到同一Tomcat服務器:
/data/config/my-app-1.properties /data/config/my-app-1-test.properties /data/config/my-app-2.properties /data/config/my-app-2-test.properties最后的想法
硬編碼配置不是最佳解決方案,但是在某些情況下,沒有比這更好的方法了。
翻譯自: https://www.javacodegeeks.com/2017/10/spring-boot-spring-config-name-case-study.html
總結
以上是生活随笔為你收集整理的Spring Boot – spring.config.name –案例研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华擎发布锐炫 A310 半高显卡:6Xe
- 下一篇: 微信删除好友怎么加回来