Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件简介


(1)名字必须为application,否则无法识别。后缀有三种文件类型: properties/yml/yaml,但是yml和yaml使用方法相同
(2) Spring Boot 项⽬默认的配置文件为 properties ,是最早期的配置文件格式,
(3) properties比yml文件优先级更高: 当 properties 和 yml 一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了"server.port", 那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最高,但加载完 .properties 文件之后,也会加载 .yml 文件的配置信息。
(4) 通常情况一个项目中只会存在一种格式的配置文件。

二、配置文件properties/yml配置内容

2.1 properties/ yml****基本语法

properties 键值对的形式:key=value
yml :树形结构的配置文件,它的基础语法是"key: value",value前面有一个空格

2.2 端口号配置

java 复制代码
# 配置项⽬端⼝号
server.port=8080

2.3 数据库配置

java 复制代码
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root

2.4 读取配置文件value

@Value 注解来实现

java 复制代码
//applacation.yml文件

ykey:
    key1: hello

//class文件
//读取yml文件中自定义设置的值
@Value("${ykey.key1}")
private String keyValue;
//就会把yml配置文件中ykey.key1的值读取并赋值给keyValue


@Value("{num}")
private String keyValue;
//单纯的赋值操作,将num赋给keyValue

2.5 配置对象

java 复制代码
//applacation.yml文件
student:
    id: 1
    name: Java
    age: 18


//class文件
@ConfigurationProperties(prefix = "student")
@Component//student对象存储到spring
public class Student { 
    private int id; 
    private String name; 
    private int age;
}

//调用类
@RestController
public class StudentController { 
    @Autowired
    private Student student; 

    @RequestMapping("/readStudent")
    public String readStudent(){ 
        return student.toString(); 
    } 
}

2.6 配置集合/map

java 复制代码
//yml文件
dbtypes:
    name:
        - mysql
        - sqlserver
        - db2


maptypes:
    map:
        k1: kk1
        k2: kk2
        k3: kk3

//读取集合
@Component 
@ConfigurationProperties("dbtypes") 
@Data
public class ListConfig { 
    private List name; 
}


@RestController
public class ReadYml2 { 
    @Autowired
    private ListConfig listConfig;
 
    @RequestMapping("/readList")
    public String readList(){ 
        return listConfig.toString(); 
    } 
}

//map读取方式同上

2.7 yml中单双引号区别

java 复制代码
//yml文件
test:
    str: 'hello \n world'
    str2: "hello \n world"


//获取配置值后输出结果:
str:hello \n world
str2:hello 
     world

(1)字符串默认不用加上单引号或者双引号。
(2)单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据
(3)双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
注意:使用properties配置文件,中文会出现乱码, yml配置文件可以显示中文

三、yml配置文件优缺点

3.1 yml 优点

(1)yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
(2)yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空百符号缩进和大量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
(3)yml ⽀持更多的编程语⾔,它不止是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、 JavaScript、Perl 中。

3.2 yml 缺点

不适合写复杂的配置文件

四、创建不同环境的配置⽂件

application-dev.yml
application-prod.yml
2、在 application.yml 中设置运行环境
spring.profiles.active=dev
3、以下是yml文件执行配置

从8080端口执行其他配置后变为9090

相关推荐
我命由我123452 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
武子康4 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
舒一笑4 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
@昵称不存在6 小时前
Flask input 和datalist结合
后端·python·flask
zhuyasen6 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单
后端·go
东林牧之6 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
YuTaoShao7 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw7 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
超浪的晨7 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
AntBlack7 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉