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 –案例研究相关推荐
- spring boot + spring mvc 原理解析
前言:spring mvc 是当前最为流行的一种java WEB 框架.在还没有spring boot以前,通常搭配tomcat等容器进行web项目的开发.而现在spring全家桶越来越完善.慢慢脱离 ...
- Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos
2019独角兽企业重金招聘Python工程师标准>>> A couple of weeks ago I was evaluating the possibility to use S ...
- Spring Boot + Spring Data + Elasticsearch实例
在本文中,我们将讨论"如何创建Spring Boot + Spring Data + Elasticsearch范例". 本文中使用的工具: Spring Boot 1.5.1.R ...
- Spring Boot+Spring Cloud实现itoken项目
itoken项目简介 开发环境 操作系统: Windows 10 Enterprise 开发工具: Intellij IDEA 数据库: MySql 5.7.22 Java SDK: Oracle J ...
- Spring Boot+Spring Security+JWT 实现token验证
Spring Boot+Spring Security+JWT 实现token验证 什么是JWT? JWT的工作流程 JWT的主要应用场景 JWT的结构 SpringBoot+Spring Secur ...
- Spring Boot Spring MVC 异常处理的N种方法
默认行为 根据Spring Boot官方文档的说法: For machine clients it will produce a JSON response with details of the e ...
- spring boot + spring batch 读数据库文件写入文本文件读文本文件写入数据库
好久没有写博客,换了一家新公司,原来的公司用的是spring,现在这家公司用的是spring boot.然后,项目组布置了一个任务,关于两个数据库之间的表同步,我首先想到的就是spring batch ...
- Spring Boot Spring MVC 异常处理的N种方法 1
github:https://github.com/chanjarste... 参考文档: Spring Boot 1.5.4.RELEASE Documentation Spring framewo ...
- Spring - Spring Boot Spring Cloud
Spring -> Spring Boot > Spring Cloud 这几天刚刚上班,公司用的是Spring Cloud,接触不多.我得赶快学起来. 想学习就必须得知道什么是微服务,什 ...
- springboot jwt token前后端分离_基于Spring Boot+Spring Security+JWT+Vue前后端分离的开源项目...
一.前言 最近整合Spring Boot+Spring Security+JWT+Vue 完成了一套前后端分离的基础项目,这里把它开源出来分享给有需要的小伙伴们 功能很简单,单点登录,前后端动态权限配 ...
最新文章
- android media player setlooping,Android Mediaplayer-一次播放铃声
- 用python解算法谜题_编程的乐趣 用Python解算法谜题
- ecshop“发货查询”中加入收货人、收货地址、发货时间、配送方式
- C++ nlohmann/json 的主要用法
- Effective Java~38. 用接口模拟可扩展的enum
- 商汤研究院-SpringAutoML团队招聘啦~
- java继承test 怎么写_Java Junit Test 要怎么写?
- 计算机游戏手机攻略,云顶之弈无敌攻略,竟然是用手机玩出来的
- java 订阅 kafka_尝试从kafka(0.10版本)访问kafka(0.90版本)时订阅方法抛出错误...
- dlna 斐讯r1怎么用_挽救智障——斐讯R1:固件升级、安装DLNA和Soundwire
- eclipse汉化版的问题
- 年度盘点和预测:数说汽车互联网市场
- 男人的消费观连狗都不如
- Justinmind使用教程(1)——概述部分
- qt textbrowser的边界框怎样改变颜色_专访天使投资人续沛川:用深度思考打破人生边界,拥有张力一生...
- The first interview for xiecheng
- 止咳绝招 献给身边咳嗽的人
- ch01: 初识数据库
- 快递100获取快递信息(爬虫)
- 元数据“人行横道”MC