5.SpringBoot的配置与使用

一.Spring配置⽂件作⽤

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:数据库的连接信息(包含⽤户名和密码的设置);项⽬的启动端⼝;第三⽅系统的调⽤秘钥等信息;⽤于发现和定位问题的普通⽇志和异常⽇志等。想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要

二.配置文件格式

Spring Boot配置文件主要分为以下两个格式:

  1. .properties
  2. .yml

区别:

properties类型的配置文件是Spring Boot项目默认的文件格式,而yml是新兴的配置文件

注意

1.它们可以在同一个项目中,但是如果它们出现的同样的配置信息,优先按照 .properties配置文件,加载完.properties文件之后,才会加载.yml文件的配置信息。

2.理论上它们两个可以共存,但是为了便于维护降低故障率,通常采取统一的配置文件格式。

三.properties配置文件说明

3.1 properties 基本语法

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

3.2读取配置文件

如果要主动读取配置文件中的内容,可以使用 @Value 注解实现

@Value 注解使用 "${}" 的格式读取

@Component
public class Properties
{
@Value("${server.port}")
private String port;
@PostConstruct
public void postConstruct() {
System.out.println("Read Properties,port:" + port);
    }
}

@Component在spring Boot启动时会注入到框架中,注入到框架中时会执行,@PostConstruct初始化方法,这个时候能读到配置信息。

3.3 Properties缺点分析

properties配置以key-value的形式配置,冗余信息较多

四、yml 配置文件说明

yml的优点:

1.可读性搞,写法简单,便于理解,语法与JSON相似

2.支持更多数据类型

3.支持更多的编程语言,例如Golang,Python

4.1 yml 基础语法

yml是树形结构的配置文件,基础语法是“key: value” (用英文符号 冒号)且空格不可省略

基础语法:

#正确的配置方式
string:
    datasource:
        url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
#yml对格式要求极其严格,冒号后面必须加一个空格,否则会报错

4.2 yml 配置不同的数据类型以及null

#字符串
string.value: Hello
#布尔值
boolean.value: true
boolean.value1: false
#整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
#浮点数
float.value: 3.14159    
float.value1: 3114159e-5 #科学计数法
#null  ,~代表null
null.value: ~

4.3 yml 配置读取

yml配置读取的方式与properties相同,使用@Value注解即可

@Component
public class Readyml
{
@Value("${server.port}")
private String port;
@PostConstruct
public void postConstruct() {
System.out.println("Read YML,port:" + port);
    }
}

注意:

1.字符串默认不用加上单引号或者双引号

2.单引号会转义特殊字符,特殊字符最终还是一个普通的字符串数据

3.双引号不会转义字符串里的特殊字符,特殊字符会作为本身想表达的意思

4.4 yml 配置对象

yml也可配置对象:

student:
 id: 1
 name: java
 age: 16
 #或者行内写法
 student: {id:1,name: java,age: 18}

这个时候不能用@Value来读取配置的对象了,只可用@ConfigurationProperties来读取

@ConfigurationProperties(prefix="student")
@Component
@GET   
@SET
public class StudentComponent{
    private int id;
    private String name;
    private int age;
    
    //省略的getter和setter方法
}

以上代码:getter和setter方法不能省,这里为了篇幅就省略了

调用类的实现:

@Componentpublic class ReadYml2 {
@Autowiredprivate 
StudentComponent studentComponent;
@PostConstruct
public void postConstruct() {
System.out.println(studentComponent);}
}

运行结果:

4.5 yml 配置集合

配置文件也可以配置list集合:

dbtypes:
    name:
        -mysql
        -sqlserver
        -db2
 #行内写法
 dbtypes: {name:[mysql,sqlserver,db2]}        

与对象的读取方式一样,用@ConfigurationProperties来读取

@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
private List<String> name;}

打印类的实现:

@Component
public class ReadYml2 {
@Autowired
private ListConfig listConfig;
@PostConstruct
public void postConstruct() {
System.out.println(listConfig.getName());
    }
}

五、properties VS yml

配置方式不同:

properties 是以key=value 形式配置键值类型的配置文件,yml 是类似 json 格式的树形配置方式进行配置的,yml 层间之间使用换行缩进的方式配置, key与value 之间 使用 “:”英文冒号+空格的方式设置,且空格不可省略。

数据大小不同:

properties是早期默认的配置文件格式,配置上有冗余数据,

而yml 可以解决数据冗余的问题。

兼容性不同:

yml通用性更好,支持多种语言,云服务器开发可以使用yml 一份配置文件作为Java和Go的共同配置文件, yml支持更多的数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值