2024-01-06 16:40

Springboot配置文件

少尉

JavaEE

(112)

(0)

收藏

1 概念

SpringBoot支持并定义了配置文件的格式,也在另⼀个层面达到了规范其他框架集成到SpringBoot的目的

很多项目或者框架的配置信息也放在配置文件中,比如:

项目的启动端口

SpringBoot内置了Tomcat服务器, 默认端口号是8080。但是该端口号可能被占用,所以就需要程序员自定义端口号

数据库的连接信息(包含用户名和密码的设置)

第三方系统的调用密钥等信息

用于发现和定位问题的普通日志和异常日志等

2 配置文件的格式

Spring Boot 支持三种格式:properties、yml、yaml,但是只支持下面三种配置文件:

Spring Boot 配置文件有以下三种:

application.properties

application.yml

application.yaml

yml 为yaml的简写, 实际开发中出现频率最高,yaml 和yml 的使用方式⼀样。

当应用程序启动时, Spring Boot会自动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml 文件

也可以通过spring.config.name指定文件路径和名称

3、properties 配置文件说明

properties 配置⽂件是最早期的配置⽂件格式,也是创建 SpringBoot 项目默认的配置文件

3.1 properties 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以"="连接的,如:

# 配置项⽬端⼝号
server.port=8080
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root

3.2 读取配置文件

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

mykey.key1 = bite    #properties 配置
1
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PropertiesController {
@Value("${mykey.key1}")
private String key1;
@RequestMapping("/key")
public String key(){
return "读取到值:"+key1;
}
}

3.3 properties 缺点分析

是以 key-value 的形式配置的,会有很多冗杂的信息。yml格式则很好地避免了这个问题。

4、 yml 配置文件说明

4.1 yml 基本语法

yml 是树形结构的配置文件,它的基础语法是"key: value"。

key 和 value 之间使用英文冒号加空格的方式组成,空格不可省略

4.2 yml 的使用

1. 使用yml连接数据库

使用 @Value 来读取

# 使用yml连接数据库
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
username: root
password: root

2. yml 配置不同数据类型及 null

使用 @Value 来读取

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
# 浮点数
float.value: 3.14159
# Null,~代表null
null.value: ~
# "" 空字符串
#, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value: ''

3. 配置对象

用 @ConfigurationProperties 来读取

# 第一种写法
student:
id: 1
name: Java
age: 18
# 第二种写法(行内写法)
student: {id: 1,name: Java,age: 18}
@RestController
public class StudentController {
@Autowired
private Student student;
@RequestMapping("/readStudent")
public String readStudent(){
return student.toString();
}
}
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {
    private int id;
    private String name;
    private int age;
}
student:
  id: 1
  name: Java
  age: 18


4. 配置集合

用 @ConfigurationProperties 来读取

dbtypes:
name:
- mysql
- sqlserver
- db2
@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
private List<String> name;
}
@RestController
public class ReadYml2 {
@Autowired
private ListConfig listConfig;
@RequestMapping("/readList")
public String readList(){
return listConfig.toString();
}
}

5. 配置Map

用 @ConfigurationProperties 来读取

maptypes:
map:
k1: kk1
k2: kk2
k3: kk3
 maptypes: {map: {k1: kk1,k2: kk2, k3: kk3}}
@Component
@ConfigurationProperties("maptypes")
@Data
public class MapConfig {
private HashMap<String,String> map;
}
@RestController
public class ReadYml2 {
@Autowired
private MapConfig mapConfig;
@RequestMapping("/readMap")
public String readStudent(){
return mapConfig.toString();
}
}

4.3 关于单双引号

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

单引号会转义特殊字符,使其失去特殊功能, 始终是⼀个普通的字符串

双引号不会转义字符串里面的特殊字符, 特殊字符会表示本身的含义

4.4 yml 优缺点

优点

可读性高,写法简单, 易于理解

支持更多的数据类型, 可以简单表达对象, 数组,List,Map等数据形态

支持更多的编程语言, 不止是Java中可以使用,在Golang, Python, Ruby, JavaScript中也可以使用

缺点

不适合写复杂的配置文件

对格式有较强的要求(忘记空格检查会很麻烦)

0条评论

点击登录参与评论