配置文件

SpringBoot 有两种配置文件格式,二选一即可,官方推荐 yaml:

  • application.properties key=value的格式
  • application.yaml key: value的格式

配置文件位置

SpringBoot会从这四个位置全部加载主配置文件;互补配置。优先级从高到低。

  • --spring.config.location=F:/application.yaml
  • /config/application.yaml
  • /application.yaml
  • /src/main/resources/config/application.yaml
  • /src/main/resources/application.yaml

yaml 格式特点

  • 冒号后面必须有一个空格,不能省略
  • 以缩进来控制层级关系,左边对齐的为同一层级
  • 属性和值的大小写敏感
  • 双引号中的特殊字符会转义输出,如"hello \n world"会发生换行
  • 双引号中的特殊字符会原样输出,如‘hello \n world’所见即所得

配置示例

# src/main/resources/application.properties
server.port=8081
# src/main/resources/application.yaml
server:
port: 8081 # 对象形式
student:
name: zhangsan
age: 18 # 行内对象形式
student: {name: zhangsan,age: 18} # 数组形式
pets:
- cat
- dog
- pig # 行内数组形式
pets: [cat,dog,pig]

配置 banner

# src/main/resources/banner.txt
# https://www.bootschool.net/ascii-art
_ _
_(9(9)__ __/^\/^\__
/o o \/_ __\_\_/\_/_/_
\___, \/_ _\.' './_ _/\_
`---`\ \/_ _\/ \/_ _|.'_/
\ \/_\/ / \/_ |/ /
\ `-' | ';_:' /
/| \ \ .'
/_/ |,___.-`', /`'---`
/___/` /____/

注入 yaml 配置文件(方式一)

package com.wu.helloworld.pojo;

@Component
public class Dog {
@Value("阿黄")
private String name;
@Value("18")
private Integer age;
}
@SpringBootTest
class HelloworldApplicationTests {
@Autowired
private Dog dog; @Test
public void contextLoads() {
System.out.println(dog)
}
}

注入 yaml 配置文件(方式二)

<!-- 导入配置文件处理器依赖,需要重启IDE -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
package com.wu.helloworld.pojo;

@Component
public class Dog {
private String name;
private Integer age; //构造函数、get、set、toString 等方法
}
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog; //构造函数、get、set、toString 等方法
}
person:
name: wu_${random.uuid}
age: ${random.int}
happy: false
birth: 2000/01/01
maps: {k1: v1,k2: v2}
lists:
- code
- girl
- music
dog:
name: ${person.dogName:默认名字}_旺财
age: 1
@SpringBootTest
class DemoApplicationTests {
@Autowired
Person person; @Test
public void contextLoads() {
System.out.println(person);
}
}

注入 properties 配置文件

设置 properties 的编码格式为UTF-8:

File / Settings / File Encodings / Properties Files / UTF-8 && √ Transparent native-to-ascii conversion

# src/main/resources/person.properties
person.name=wu
person.age=18
person.sex=男
// 使用 PropertySource 注解加载制定的配置文件
@PropertySource(value = "classpath:person.properties")
@Component
public class Person {
@Value("${person.name}") // 从配置文件中取值
private String name;
@Value("#{9*2}") // #{SPEL} Spring表达式
private int age;
@Value("男") // 字面量
private String sex;
}

松散绑定

dog:
first-name: 旺财
age: 3 @Component
@ConfigurationProperties(prefix = "dog")
public class Dog {
private String firstName; // 可以绑定横杠的配置值
private Integer age;
}

SpringBoot 之 配置文件、yaml语法、配置注入、松散绑定的更多相关文章

  1. SpringBoot:配置文件及自动配置原理

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...

  2. springboot(3)——配置文件和自动配置原理详细讲解

    原文地址 目录 概述 1. 配置文件作用 2.配置文件位置 3.配置文件的定义 3.1如果是定义普通变量(数字 字符串 布尔) 3.2如果是定义对象.Map 3.3如果是定义数组 4.配置文件的使用 ...

  3. JAVAEE——SpringBoot配置篇:配置文件、YAML语法、文件值注入、加载位置与顺序、自动配置原理

    转载 https://www.cnblogs.com/xieyupeng/p/9664104.html @Value获取值和@ConfigurationProperties获取值比较   @Confi ...

  4. SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入

    全局配置文件 全局配置文件能够对一些默认配置值进行修改.SpringBoot 使用一个名为 application.properties 或者 application.yaml的文件作为全局配置文件, ...

  5. SpringBoot 属性配置文件数据注入配置和yml与properties区别

    前言 我们知道SpringBoot 通过配置类来解放一堆的xml文件配置,通属性配置文件,来进行,系统全局属性配置,这样极大的简化了我们开发过程,java web 也可以甜甜的从此 快速配置 Spri ...

  6. springboot----四、yaml配置注入

    四.yaml配置注入 4.1.配置文件 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 application.properties 语法结构 :key=value applic ...

  7. SpringBoot系列之YAML配置用法

    1.全局配置 SpringBoot的全局配置文件有两种: application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值,主要是 ...

  8. SpringBoot读取yml中的配置,并分离配置文件

    前言 在项目中经常遇到需要读取配置文件中的配置信息,这些配置信息之所以不写在代码中是因为实际项目发布或者部署之后会进行更改,而如果写在代码中编译之后没有办法进行修改. 之前使用的是properties ...

  9. SpringBoot之yaml语法及静态资源访问

    配置文件-yaml 在spring Boot开发中推荐使用yaml来作为配置文件. 基本语法: key: value:kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 ...

随机推荐

  1. 多线程异步操作导致异步线程获取不到主线程的request信息

    org.springframework.web.context.request.RequestContextHolderorg.springframework.web.context.request. ...

  2. GET传参数方式

    controller:/getDetail/{id} /getDetail?id1234567 /getDetail?id=id1234567

  3. Spring Boot对静态资源的映射规则

    规则一:所有 " /webjars/** " 请求都去classpath:/META-INF/resources/webjars/找资源 webjars:以jar包的方式引入静态资 ...

  4. 【笔记】草履虫也能看懂的ELK搭建流程

    环境需要 Elasticsearch需要JAVA环境,至少是JDK1.8 elasticsearch 不允许root用户使用,需要新增个elk用户 如果觉得官网下载太慢,可以使用这个 https:// ...

  5. gitlab的分支保护配置

    目录 一.简介 二.Gitlab配置步骤 一.简介 开发当前开发的分支遇到暂时无法解决的问题,现在有需要开发其他应用,所以希望运维这边将当前有问题分支冻结,让其他人无法进行修改,待后续有时间在排查代码 ...

  6. shell脚本 系统信息检测

    一.简介 源码地址 日期:2018/4/12 介绍:根据指令展示不同的系统数据 效果图: 二.使用 适用:centos6+ 语言:中文 注意:无 下载 wget https://raw.githubu ...

  7. Linux core 文件浅析

    浅析Linux下core文件 当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方.最常出 现的,几乎所有C程序员都出现过的错误就是"段错误& ...

  8. java 编程基础 Class对象 反射:动态代理 和AOP:java.lang.reflect.Proxy:(Proxy.newProxyInstance(newProxyInstance​(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h))

    为什么我们使用动态代理 静态代理会让类变多了,多了代理类,工作量变大了,且不易扩展.比如我们上节课的例子,要实现不同的扩展方法就要编写不同的代理类,非常麻烦.   Proxy类的使用规则 Proxy提 ...

  9. 『学了就忘』Linux日志管理 — 90、Linux中日志介绍

    目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...

  10. Uni-app原生插件入门使用教程-[1]从Uni-app插件市场试用插件

    [1]从Uniapp插件市场试用插件 当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,可使用App离线SDK开发原生插件来扩展原生能力. 如使 ...