目录

一、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根据环境装配配置文件、启动加载外置配置文件相关推荐

  1. Spring项目启动加载xml配置文件替换数据库提高响应速度

    文章目录 1. pom依赖 2. xml配置文件 3. 获取参数工具类 4. 根据beanId从SpringBootIOC获取类实例工具类 5. 测试类 6. 浏览器+控制台验证 1. pom依赖 & ...

  2. springboot启动加载流程

    springboot 启动类有两大核心: 一个是注解@SpringBootApplication,一个是main方法里面的SpringApplication.run. 1.通过main方法 启动spr ...

  3. springboot集成mybatis源码分析-启动加载mybatis过程(二)

    springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...

  4. SpringBoot配置Profile以及配置文件的加载位置

    Profile介绍 Profile是Spring在不同环境的使用的时候提供的不同的配置方案,在Spring源码中对于Profile的解析也是放在第一位的.Spring配置解析的时候第一个判断的就是Pr ...

  5. Springboot 配置文件的加载位置以及优先级和外部配置文件加载的优先级

    配置文件的加载位置: springboot在启动时会扫描以下位置的application.properties文件或者application.yml文件作为springboot默认的配置文件. 项目目 ...

  6. @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值

    @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值 该注解value={},可以使用String数组形式,读取多个配置 ...

  7. tomcat启动的时候,没加载xml配置文件

    tomcat启动项目的时候,发现没加载xml配置文件,解决办法是:选中conf文件夹右键选择"Build Path"-->"use as Source Folder ...

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

  9. SpringBoot如何正确控制bean的加载顺序

    1. 为什么需要控制bean的加载顺序 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了SPI[Service Provider Interface]机 ...

最新文章

  1. mysql密码有格式要求吗_高考日语作文10个格式要求!你能看出图中5处错误吗?...
  2. 离开时自动提示设为首页
  3. SAP UI5和微信小程序对比之我见
  4. PHPStudy下Apache SSL证书安装教程 1
  5. elementui源码_Element UI 终于还是来啦
  6. linux-组管理-添加组-删除组
  7. 三、服务器和客户端的信息函数
  8. C Tricks(六) —— 数组去重的实现
  9. 20155238 2016-2017-2 《Java程序设计》第三周学习总结
  10. linux 下qt 中关于字符集及其转换
  11. 灵格斯怎么屏幕取词_灵格斯词霸怎么用?灵格斯词霸使用手册
  12. three.js实现球体地球城市模拟迁徙
  13. 易语言制作的QQ聊天中常用的GIF图片【带源码下载】
  14. 【华为机试 Python实现】VLAN资源池
  15. 对话状态跟踪学习笔记
  16. 英文歌的计算机普,好听的英文歌:See You Again--DJ Frank ECharlie Puth
  17. n行Python代码系列:五行代码实现两个视频画中画播放
  18. 【C语言总结】C语言预处理器
  19. Codeup最长公共子序列(LCS):最长公共子序列
  20. 佳能Canon PIXMA MX715 打印机驱动

热门文章

  1. Spring 初识Aop JDK动态代理实现 原理初显
  2. Netty介绍 与第一个Netty实例
  3. html语义化面试题,前端面试题-HTML结构语义化
  4. 八皇后问题初始思路python_Python 学习笔记(一)10行代码解决八皇后问题
  5. unix到底有啥用_观点|什么是Unix以及它为什么这么重要?
  6. 输入代码自动生成流程图_厉害了,这个工具能用伪代码生成流程图
  7. shell脚本mysql_Shell脚本中执行sql语句操作MySQL数据库的几个方法
  8. QToolButton设置背景无效的思考
  9. server2012 图文安装流程
  10. sql is null优化_你不会还在用这8个错误的SQL写法吧?