SpringBoot配置文件

目录

一.作用

二.格式

2.1 properties 格式

2.2yml格式

2.3注意

三.properties VS yml


一.作用

        在SpringBoot项目当中,所有的重要数据都是在配置文件中配置,最常见的就是连接数据库信息,启动端口等!

如上图,如果没有配置文件,SpringBoot项目就无法连接数据库,甚至不能排查问题的关键日志!

二.格式

在SpringBoot项目当中,配置文件主要是2种格式

  • .properties:默认的文件格式
  • .yml

两种方式都是同样的目的,只不过格式不一样。

2.1 properties 格式

        .properties 文件是 Java 中常见的配置文件格式,它由一系列键值对组成,通常用于简单的配置需求。每行包含一个键值对,以等号连接

示例:

# 配置项⽬端⼝号
server.port=8084
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=
utf8
spring.datasource.username=root
spring.datasource.password=root

配置形式:key = value;

优缺点:

  1. 有大量的冗余信息,例如:需要重复写Spring.datasource
  2. 易于人们理解和编辑,不需要特殊的工具或技能
  3. 支持多种数据类型

数据读取 

        如果我们主动读取配置文件,可以使用@Value注解实现!

格式:@value("${ }")

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ReadYml {
 @Value("${server.port}")
 private String port;
 @PostConstruct
 public void postConstruct() {
 System.out.println("Read YML,port:" + port);
 }
}

2.2yml格式

        yml 是 YAML 是缩写,使用的语法是" key: value" 在value前面,冒号后面需要添加一个空格!

spring:
 datasource:                       //库名
 url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
 username: root
 password: root

优缺点分析:

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

数据读取

        读取方式和 properties 相同,使用@value("${ }")即可

2.3注意

字符串方面 

        配置文件中,默认的字符串不需要添加单引号或者双引号,但是添加了就是特殊的意思!

string:
     str1: Hello \n Spring Boot.
     str2: 'Hello \n Spring Boot.'
     str3: "Hello \n Spring Boot."

 执行结果:

        单引号会转义特殊字符,双引号不会转义其中的特殊字符,会作为本身表示的意思!

对象方面

        可以在yml当中配置对象!如下代码:

student:
 id: 1
 name: Java
 age: 18

或者

student: {id: 1,name: Java,age: 18}

而我们知道读取配置的对象,我们需要使用@value("${ }"),但是此时此刻我们不能使用该方法,得使用另一个注解 @ConfigurationProperties

实现方式:

@ConfigurationProperties(prefix = "student")
@Component
@Data
public class StudentComponent {
 private int id;
 private String name;
 private int age;
}

测试类:

@Component
public class ReadYml2 {
     @Autowired
     private StudentComponent studentComponent;
     @PostConstruct
     public void postConstruct() {
         System.out.println(studentComponent);
     }
}

结果:

list方面

        和对象配置是一样的,读取是没有区别。

dbtypes:
 name:
 - mysql
 - sqlserver
 - db2
或者
dbtypes: {name: [mysql,sqlserver,db2]}

三.properties VS yml

  1. properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的 树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
  2. properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。
  3. yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。
  4. yml ⽀持更多的数据类型。

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tq02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值