[toc]

1. 配置多个properties文件:

在application.properties文件中添加

spring.profiles.active=jdbc,constants,resultCode

表示,使用application-jdbc.properties 和 application-constants.properties 和 application-resultCode.properties

命名方式:application-xxx.properties

2.属性变量引用方式@@

这种属性应用方式是field_name=@field_value@。

两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用。 @@方式可以引用springboot 非默认配置文件(即其他配置文件) 中的变量; springboot默认配置文件是src/main/resources/application.properties 原文:https://blog.csdn.net/u011672034/article/details/79130001

你可以使用Maven的资源过滤(resource filter)自动暴露来自Maven项目的属性,如果使用spring-boot-starter-parent,你可以通过@..@占位符引用Maven项目的属性,例如:

app.encoding=@project.build.sourceEncoding@

app.java.version=@java.version@

app.project.version=@project.version@

本地环境可以用,但是打包后,不一定能用,这种方式下springboot读取了classpath中的配置,但是现在配置一般外置,所以要用这种方式,得把配置文件打包至jar中.

还有一种方式是读取jar中的pom.properties文件,打成jar包后,会生成一个pom.properties文件,里面包含版本信息,这种方式暂未实现

链接:https://www.jianshu.com/p/8c281e822c4a

3. application.yml 和bootstrap.yml 区别

  1. 加载顺序

若application.yml 和bootstrap.yml 在同一目录下:bootstrap.yml 先加载 application.yml后加载

  1. 配置区别

bootstrap.yml 和 application.yml 都可以用来配置参数。 bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootStrap.yml 被加载,则内容不会被覆盖。 application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

3.属性覆盖问题

启动上下文时,Spring Cloud 会创建一个 Bootstrap Context,作为 Spring 应用的 Application Context 的父上下文。

初始化的时候,Bootstrap Context 负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的 Environment。Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖。

也就是说如果加载的 application.yml 的内容标签与 bootstrap 的标签一致,application 也不会覆盖 bootstrap,而 application.yml 里面的内容可以动态替换。

典型的应用场景如下:

  • 当使用 Spring Cloud Config Server 的时候,你应该在 bootstrap.yml 里面指定 spring.application.name 和 spring.cloud.config.server.git.uri
  • 一些第三方服务的链接信息等
  • 和一些加密/解密的信息

application.yml与bootstrap.yml的区别 - Chen洋 - 博客园 (cnblogs.com)