当必须在不同配置中使用相同的应用程序代码时,外部化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.propertiesSPRING_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 –案例研究相关推荐

  1. spring boot + spring mvc 原理解析

    前言:spring mvc 是当前最为流行的一种java WEB 框架.在还没有spring boot以前,通常搭配tomcat等容器进行web项目的开发.而现在spring全家桶越来越完善.慢慢脱离 ...

  2. 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 ...

  3. Spring Boot + Spring Data + Elasticsearch实例

    在本文中,我们将讨论"如何创建Spring Boot + Spring Data + Elasticsearch范例". 本文中使用的工具: Spring Boot 1.5.1.R ...

  4. Spring Boot+Spring Cloud实现itoken项目

    itoken项目简介 开发环境 操作系统: Windows 10 Enterprise 开发工具: Intellij IDEA 数据库: MySql 5.7.22 Java SDK: Oracle J ...

  5. Spring Boot+Spring Security+JWT 实现token验证

    Spring Boot+Spring Security+JWT 实现token验证 什么是JWT? JWT的工作流程 JWT的主要应用场景 JWT的结构 SpringBoot+Spring Secur ...

  6. Spring Boot Spring MVC 异常处理的N种方法

    默认行为 根据Spring Boot官方文档的说法: For machine clients it will produce a JSON response with details of the e ...

  7. spring boot + spring batch 读数据库文件写入文本文件读文本文件写入数据库

    好久没有写博客,换了一家新公司,原来的公司用的是spring,现在这家公司用的是spring boot.然后,项目组布置了一个任务,关于两个数据库之间的表同步,我首先想到的就是spring batch ...

  8. Spring Boot Spring MVC 异常处理的N种方法 1

    github:https://github.com/chanjarste... 参考文档: Spring Boot 1.5.4.RELEASE Documentation Spring framewo ...

  9. Spring - Spring Boot Spring Cloud

    Spring -> Spring Boot > Spring Cloud 这几天刚刚上班,公司用的是Spring Cloud,接触不多.我得赶快学起来. 想学习就必须得知道什么是微服务,什 ...

  10. springboot jwt token前后端分离_基于Spring Boot+Spring Security+JWT+Vue前后端分离的开源项目...

    一.前言 最近整合Spring Boot+Spring Security+JWT+Vue 完成了一套前后端分离的基础项目,这里把它开源出来分享给有需要的小伙伴们 功能很简单,单点登录,前后端动态权限配 ...

最新文章

  1. android media player setlooping,Android Mediaplayer-一次播放铃声
  2. 用python解算法谜题_编程的乐趣 用Python解算法谜题
  3. ecshop“发货查询”中加入收货人、收货地址、发货时间、配送方式
  4. C++ nlohmann/json 的主要用法
  5. Effective Java~38. 用接口模拟可扩展的enum
  6. 商汤研究院-SpringAutoML团队招聘啦~
  7. java继承test 怎么写_Java Junit Test 要怎么写?
  8. 计算机游戏手机攻略,云顶之弈无敌攻略,竟然是用手机玩出来的
  9. java 订阅 kafka_尝试从kafka(0.10版本)访问kafka(0.90版本)时订阅方法抛出错误...
  10. dlna 斐讯r1怎么用_挽救智障——斐讯R1:固件升级、安装DLNA和Soundwire
  11. eclipse汉化版的问题
  12. 年度盘点和预测:数说汽车互联网市场
  13. 男人的消费观连狗都不如
  14. Justinmind使用教程(1)——概述部分
  15. qt textbrowser的边界框怎样改变颜色_专访天使投资人续沛川:用深度思考打破人生边界,拥有张力一生...
  16. The first interview for xiecheng
  17. 止咳绝招 献给身边咳嗽的人
  18. ch01: 初识数据库
  19. 快递100获取快递信息(爬虫)
  20. 元数据“人行横道”MC

热门文章

  1. Memcached总结
  2. JVM发生OOM的 8 种原因、及解决办法
  3. 如何在局域网访问Tomcat项目
  4. 架构师必须搞懂DNS,一篇文章就够了。
  5. 漫画算法:无序数组排序后的最大相邻差值
  6. 公众号一年能有多少收入?
  7. 递归->记忆化搜索->严格表
  8. TS字面量进行类型声明
  9. 2019蓝桥杯省赛---java---B---1(组队)
  10. html让时间只展示年月日_如何用html写代码,使得在网页上显示当前的时间和日期...