配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;
•application.properties
•application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

yaml

YAML(YAML Ain’t Markup Language)
​ YAML A Markup Language:是一个标记语言
​ YAML isn’t Markup Language:不是一个标记语言;

标记语言:
​ 以前的配置文件;大多都使用的是 xxxx.xml文件;
​ YAML:以数据为中心,比json、xml等更适合做配置文件;
​YAML:配置例子

server:port: 8081path: /hello

​XML

<server><port>8081</port>
</server>

yaml语法

k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的。
属性和值也是大小写敏感;

使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
大小写敏感

1.基本语法

2.值的写法

2.1 字面量:普通的值(数字,字符串,布尔)

k: v —字面直接来写;
字符串默认不用加上单引号或者双引号;
“”:双引号:不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
‘’:单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串数据。
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

2.2 对象,Map

k: v :在下一行来写对象的属性和值的关系;注意缩进
对象还是k: v的方式
普通写法:

friends:lastName: zhangsan        age: 20

行内写法:

friends: {lastName: zhangsan,age: 18}
2.3 数组(List,Set)

普通写法:

pets:‐ cat‐ dog‐ pig

行内写法:

pets: [cat,dog,pig]

配置文件注入

配置文件

person:lastName: helloage: 18boss: falsebirth: 2017/12/12maps: {k1: v1,k2: 12}lists:‐ lisi‐ zhaoliudog:name: 小狗age: 12

javaBean

/*** 将配置文件中配置的每一个属性的值,映射到这个组件中* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;*      prefix = "person":配置文件中哪个下面的所有属性进行一一映射** 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;**/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String lastName;private Integer age;private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;
}

导入配置文件管理器,后续编写配置文件会有提示

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency>        <groupId>org.springframework.boot</groupId>            <artifactId>spring‐boot‐configuration‐processor</artifactId>            <optional>true</optional>
</dependency>

1. properties配置文件在idea中默认utf-8可能会乱码


2.获取配置文件值@Value和@ConfigurationProperties比较

@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;

通过(@Value或@ConfigurationProperties)都能获取配置文件(yml文件或者properties文件)的值.
如果只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

3、配置文件注入值数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {//lastName必须是邮箱格式@Emailprivate String lastName;private Integer age;private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;

4.@PropertySource&@ImportResource&@Bean

@PropertySource:加载指定的配置文件;
/*** @ConfigurationProperties(prefix = "person"):配置文件中哪个下面的所有属性进行一一映射**/
@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String lastName;private Integer age;private Boolean boss;
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;

Spring Boot中没有Spring的配置文件,自己编写的配置文件,不能自动识别;想让Spring的配置文件生效,加载进来,用@ImportResource标注在一个配置类上

@ImportResource(locations = {"classpath:beans.xml"})
@Bean

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件

@Configuration
public class MyAppConfig {//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名@Beanpublic HelloService helloService02(){System.out.println("配置类@Bean给容器中添加组件了...");return new HelloService();}
}

配置文件占位符

在配置文件中可以占位符进行站位,占位符内部可以配置相关函数或者获取之前配置的值。

获取随机数:

random.value、{random.value}、random.value、{random.int}、${random.long}
random.int(10)、{random.int(10)}、random.int(10)、{random.int[1024,65536]}

占位符获取之前配置的值,没有可以用:指定默认值

person.last‐name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

Profile

Profile是Spring对不同环境(开发、生产、测试)提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。

多properties文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;

yml支持多文档块方式

yml支持多文档块方式,不需要向properties文件一样,配置多个不同环境下的文件。

spring:profiles:active: prod #指定激活那个环境
---
server:port: 8081
spring:profiles:test #指定属于哪个环境
‐‐‐
server:port: 8083
spring:profiles: dev  #指定属于哪个环境
‐‐‐
server:port: 8084
spring:profiles: prod  #指定属于哪个环境

激活指定profile

1、在配置文件中指定 spring.profiles.active=dev
​2、命令行:
            java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
            可以直接在测试的时候,配置传入命令行参数
​3、虚拟机参数;
            -Dspring.profiles.active=dev

配置文件加载位置

springboot 启动会扫描以下位置的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=G:/application.properties

外部配置加载顺序

1.命令行参数
2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
由jar包外向jar包内进行寻找
优先加载带profile
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
再来加载不带profile
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10.@Configuration注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性

【springboot】配置相关推荐

  1. springboot配置Redis哨兵主从服务 以及 Redis 集群

    redis哨兵集群配置 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从 ...

  2. SpringBoot配置属性之NOSQL

    SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...

  3. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

  4. aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析

    java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...

  5. SpringBoot配置属性之Server

    SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...

  6. 使用SpringBoot配置了 server.servlet.path后无效的解决方案

    使用SpringBoot配置了 server.servlet.path后无效的解决方案 参考文章: (1)使用SpringBoot配置了 server.servlet.path后无效的解决方案 (2) ...

  7. SpringBoot配置属性之MQ

    SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...

  8. springboot配置cxf

    1.引入两个需要的jar <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt ...

  9. SpringBoot配置属性之DataSource

    SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...

  10. idea springboot配置外置tomcat好处

    idea springboot配置外置tomcat好处: 1.原先用内置的tomcat,改动一点点java代码,热部署时会自动重启(可以重控制台中重到)---------慢 2.原先用内置的tomca ...

最新文章

  1. 【物联网智能网关-15】WAV播放器(WinForm+WavPlay库实例)
  2. 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法
  3. oracle 删除补全日志组_浅谈Oracle 20c ASM文件组模板技术
  4. 计算机网络技术教法改革方案,计算机网络技术专业教学模式改革探索
  5. 【Playable API】不用Animator如何播放动画?
  6. ​腾讯第一季度员工平均月薪 7.6 万元;“淘宝特价版”App 正式更名为“淘特”;Deno 1.10 正式发布|极客头条...
  7. 一元云购指定中奖版源码(开源+PC+移动端)
  8. matlab之GUI界面设计(1)
  9. UG8.5中nxopen.dll等文件所在位置
  10. 在线作图p图|图片生成|做图HTML源码
  11. 人工智能:神经网络与深度学习
  12. 有关Android插件化思考
  13. dad my_My-dad我的爸爸英语绘本.ppt
  14. 单片机原理及接口技术(C51微课第3版)张毅刚课后习题答案
  15. Android RecyclerView设置paddingBottom,scrollbars跟随滑动到底部
  16. Linux安装视频播放器
  17. 【Excel】Excel学习笔记 -- 通配符的使用与定位条件
  18. 提高访问国外网站速度
  19. 用JS写右下角烦人的弹窗小广告
  20. FPGA基本引脚知识

热门文章

  1. 2022-2028年中国演出市场深度调研与发展前景报告
  2. GCC 同时编译多个 C/C++ 文件
  3. 假设检验_python 重点
  4. BERT大火却不懂Transformer?读这一篇就够了 重点 命名实体识别
  5. Windows10+anaconda,python3.5, 安装glove-python
  6. 数据结构——四大查找算法(工作必备)
  7. 2022年AI芯片场景
  8. i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核
  9. 基于Jittor框架实现LSGAN图像生成对抗网络
  10. 编译器设计-RunTime运行时环境