这篇文章主要介绍了springboot如何引入外部yml配置文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
springboot引入外部yml配置文件
当需要在springboot中引用其他的yml文件时,需要在application.yml里配置
spring:
profiles:
include: email,xmyb
值得注意的是:application-email.yml的前缀一定要和主在配置文件application.yml的名字一致
springboot引入多个yml
1. 项目内部配置文件
spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。
SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。
我们也可以通过配置spring.config.location来改变默认配置。
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=file:///D:/application.properties,classpath:/,classpath:/config/
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置。
指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。
Idea 单测启用自定义配置:添加jvm参数:-Dspring.config.location=file:///D:/project_conf/application.yml -ea
2. 外部配置加载顺序
SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
1. 命令行参数
- 所有的配置都可以在命令行上进行指定;
- 多个配置用空格分开; –配置项=值
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
2. 来自java:comp/env的JNDI属性
3. Java系统属性(System.getProperties())
4. 操作系统环境变量
5. RandomValuePropertySource配置的random.*属性值
6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10. @Configuration注解类上的@PropertySource
11. 通过SpringApplication.setDefaultProperties指定的默认属性
要添加不同的文件,您可以使用spring.config.location以逗号分隔的属性文件列表或文件位置(目录)的属性。
-Dspring.config.location=your/config/dir/
上面的那个将添加一个目录,该目录将参考application.properties文件。
-Dspring.config.location=classpath:job1.properties,classpath:job2.properties
这会将2个属性文件添加到已加载的文件中。
默认配置文件和位置在附加指定spring.config.location的文件和位置之前加载,这意味着后者将始终覆盖先前设置的属性。(另请参阅“Spring Boot参考指南”的此部分)。
如果spring.config.location包含目录(而不是文件),它们应该以/结尾(并且将附加spring.config.name在加载之前生成的名称)。
classpath:,classpath:/config,file:,file:config/始终使用默认搜索路径,而不管其值是多少spring.config.location。
通过这种方式,您可以为应用程序设置默认值application.properties(或者您选择的任何其他基本名称spring.config.name),并在运行时使用不同的文件覆盖它,保留默认值。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程学习网。
本文标题为:springboot如何引入外部yml配置文件


基础教程推荐
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13