springboot根据环境装配配置文件、启动加载外置配置文件
目录
一、profile功能
1.简介
2.application-profile功能
3.profile条件装配
4.profile分组
二、外部化配置
1.官方文档
2.获取系统的环境变量、属性(扩展)
3.外部配置源
4.配置文件(application.yaml)查找位置
5.配置文件加载顺序
一、profile功能
1.简介
为了方便多环境适配,springboot简化了profile功能。
2.application-profile功能
(1)注意事项
① 默认配置文件 application.yaml;任何时候都会加载
② 指定环境配置文件 application-{env}.yaml
③ 默认配置与环境配置同时生效,同名配置项,环境配置文件(application-{env}.yaml)优先
④ 修改配置文件的任意值,命令行优先
(2)激活方式
① 配置文件激活
application.yaml 中加入配置,即可以激活指定的配置文件application-{env}.yaml
spring:profiles:active: test # 指定激活的环境
② 命令行激活
# 修改激活的环境
java -jar cxf-1.0-SNAPSHOT.jar --spring.profiles.active=prod
# 修改默认的配置,命令行优先
java -jar cxf-1.0-SNAPSHOT.jar --spring.profiles.active=prod --server.port=8088
3.profile条件装配
// 可以注释方法、类,根据环境来装配
@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration {// ...
}
@Configuration
public class MyConfig {@Profile("prod")@Beanpublic Color red(){return new Color();}@Profile("test")@Beanpublic Color green(){return new Color();}
}
@Profile("test")
@Component
@ConfigurationProperties("person")
@Data
public class Worker implements Person {private String name;private Integer age;
}@Profile(value = {"prod","default"})
@Component
@ConfigurationProperties("person")
@Data
public class Boss implements Person {private String name;private Integer age;
}public interface Person {String getName();Integer getAge();
}
4.profile分组
spring.profiles.group.production[0]=uat
spring.profiles.group.production[1]=test使用:--spring.profiles.active=production 激活整组的环境配置
二、外部化配置
1.官方文档
Core Features
2.获取系统的环境变量、属性(扩展)
ConfigurableApplicationContext run = SpringApplication.run(Boot09FeaturesProfileApplication.class, args);
ConfigurableEnvironment environment = run.getEnvironment();Map<String, Object> systemEnvironment = environment.getSystemEnvironment();
Map<String, Object> systemProperties = environment.getSystemProperties();System.out.println(systemEnvironment); // 环境变量
System.out.println(systemProperties); // 系统属性
@Value("${MAVEN_HOME}")
private String msg;@Value("${os.name}")
private String osName;
3.外部配置源
常用:Java属性文件、YAML文件、环境变量、命令行参数等。
4.配置文件(application.yaml)查找位置
注意:后面的可以覆盖前面的同名配置项
(1) 项目classpath 根路径
(2) classpath 根路径下config目录
(3) jar包当前目录
(4) jar包当前目录的config目录
(5) /config子目录的直接子目录
5.配置文件加载顺序
指定环境优先,外部优先,后面的可以覆盖前面的同名配置项
(1)当前jar包内部的application.properties和application.yml
(2)当前jar包内部的application-{profile}.properties 和 application-{profile}.yml
(3)引用的jar包外部的application.properties和application.yml
(4)引用的jar包外部的application-{profile}.properties 和 application-{profile}.yml
springboot根据环境装配配置文件、启动加载外置配置文件相关推荐
- Spring项目启动加载xml配置文件替换数据库提高响应速度
文章目录 1. pom依赖 2. xml配置文件 3. 获取参数工具类 4. 根据beanId从SpringBootIOC获取类实例工具类 5. 测试类 6. 浏览器+控制台验证 1. pom依赖 & ...
- springboot启动加载流程
springboot 启动类有两大核心: 一个是注解@SpringBootApplication,一个是main方法里面的SpringApplication.run. 1.通过main方法 启动spr ...
- springboot集成mybatis源码分析-启动加载mybatis过程(二)
springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...
- SpringBoot配置Profile以及配置文件的加载位置
Profile介绍 Profile是Spring在不同环境的使用的时候提供的不同的配置方案,在Spring源码中对于Profile的解析也是放在第一位的.Spring配置解析的时候第一个判断的就是Pr ...
- Springboot 配置文件的加载位置以及优先级和外部配置文件加载的优先级
配置文件的加载位置: springboot在启动时会扫描以下位置的application.properties文件或者application.yml文件作为springboot默认的配置文件. 项目目 ...
- @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值
@PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值 该注解value={},可以使用String数组形式,读取多个配置 ...
- tomcat启动的时候,没加载xml配置文件
tomcat启动项目的时候,发现没加载xml配置文件,解决办法是:选中conf文件夹右键选择"Build Path"-->"use as Source Folder ...
- Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01
目录 第一节 框架概述 1.1 什么是框架 1.2 三大框架 1.3 三层架构 1.4 MVC.Servlet.Filter MVC Servlet Filter 第二节 Struts简介 2.1 S ...
- SpringBoot如何正确控制bean的加载顺序
1. 为什么需要控制bean的加载顺序 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了SPI[Service Provider Interface]机 ...
最新文章
- mysql密码有格式要求吗_高考日语作文10个格式要求!你能看出图中5处错误吗?...
- 离开时自动提示设为首页
- SAP UI5和微信小程序对比之我见
- PHPStudy下Apache SSL证书安装教程 1
- elementui源码_Element UI 终于还是来啦
- linux-组管理-添加组-删除组
- 三、服务器和客户端的信息函数
- C Tricks(六) —— 数组去重的实现
- 20155238 2016-2017-2 《Java程序设计》第三周学习总结
- linux 下qt 中关于字符集及其转换
- 灵格斯怎么屏幕取词_灵格斯词霸怎么用?灵格斯词霸使用手册
- three.js实现球体地球城市模拟迁徙
- 易语言制作的QQ聊天中常用的GIF图片【带源码下载】
- 【华为机试 Python实现】VLAN资源池
- 对话状态跟踪学习笔记
- 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
- n行Python代码系列:五行代码实现两个视频画中画播放
- 【C语言总结】C语言预处理器
- Codeup最长公共子序列(LCS):最长公共子序列
- 佳能Canon PIXMA MX715 打印机驱动
热门文章
- Spring 初识Aop JDK动态代理实现 原理初显
- Netty介绍 与第一个Netty实例
- html语义化面试题,前端面试题-HTML结构语义化
- 八皇后问题初始思路python_Python 学习笔记(一)10行代码解决八皇后问题
- unix到底有啥用_观点|什么是Unix以及它为什么这么重要?
- 输入代码自动生成流程图_厉害了,这个工具能用伪代码生成流程图
- shell脚本mysql_Shell脚本中执行sql语句操作MySQL数据库的几个方法
- QToolButton设置背景无效的思考
- server2012 图文安装流程
- sql is null优化_你不会还在用这8个错误的SQL写法吧?