> 文章列表 > Spring —— Spring Boot 配置文件

Spring —— Spring Boot 配置文件

Spring —— Spring Boot 配置文件

JavaEE传送门

JavaEE

Spring —— Bean 作用域和生命周期

Spring —— Spring Boot 创建和使用


目录

  • Spring Boot 配置文件
    • Spring Boot 配置文件格式
    • properties配置文件
      • properties 基本语法
      • properties 缺点
    • yml 配置文件
      • yml 基本语法
      • yml 配置不同类型数据及 null
      • yml 配置对象
      • yml 配置集合
    • properties VS yml
    • 设置不同环境的配置文件

Spring Boot 配置文件

如果没有配置信息, Spring Boot 项目就不能连接和此操作数据库, 甚至是不能保存可以用于排查问题的关键日志, 配置文件的作用是非常重要的.

  1. 系统使用的配置文件 (系统配置文件), 如端口号的配置, 链接数据库的配置
  2. 用户自定义配置文件

Spring Boot 配置文件格式

  1. .properties
  2. .yml (yaml)

Spring —— Spring Boot 配置文件

# 注意事项 #

  1. 当一个项目中, 存在两种格式的配置文件, 并且两个配置文件间中设置了相同的配置项, 但之不同时. .properties 配置文件的优先级最高, 但加载完 .properties 文件之后, 也会加载 .yml 文件的配置信息.
  2. 理论上讲 .properties 可以和 .yml 共存, 但实际业务中, 我们通常会采用一种统一的配置文件格式, 这样可以更好的维护.

properties配置文件

properties 基本语法

# properies 以键值的形式配置的: key=vaule.

# 设置端口号
server.port=8888

Spring —— Spring Boot 配置文件

# 我们还可以自定义配置项

myTest=gujiu

我们还可以读取配置项中的内容, 使用 @Value 注解来实现, @Value 注解使用 “${}” 的格式读取.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Value("${myTest}")private String mytest;@RequestMapping("/getconf")public String getConfig() {return mytest;}
}

注: 不可以用 @Value(“myTest”) 读取, 其含义是, 将字符串赋值给 mytest 变量.


properties 缺点

当我们想配置数据库的时候.

# 连接数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

从上述配置 key 中可以看出, properties 配置文件中会有很多的冗余信息.

Spring —— Spring Boot 配置文件

想要解决这个问题,就可以使用 yml 配置⽂件的格式化了.


yml 配置文件

yml (YAML - Yet Another Markup Language) 翻译成中文 “另一种标记语言”

yml 优点

  1. yml 是一个可读性高, 写法简单, 易于理解, 他的语法和 JSON 语言类似.
  2. yml 支持更多的数据类型, 它可以简单表达清单 (数组), 散列表, 标量等数据形态, 它使用空白符号缩进和大量依赖外观的特色, 特别时候来表达或编辑数据结构, 各种配置文件等.
  3. yml 支持更多的编程语言, 它不只是 Java 中可以使用在 Golang, PHP, Python, Ruby, JavaScripy, Perl 中.

yml 基本语法

yml 是树形结构的配置文件: key: vaule .

# 注意 # key 和 vaule 直接使用英文冒号加空格的方式组成, 空格不可省略.

# 配置端口
server:port: 6666
# 自定义配置  
mytest2: gugu

同样是使用 @Value 注解使用 “${}” 的格式读取.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Value("${mytest2}")private String myTest;@RequestMapping("/getconf2")public String getConfig2() {return myTest;} 
}

Spring —— Spring Boot 配置文件

当我们配置数据库连接

# 配置数据库连接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8username: rootpassword: 123456

Spring —— Spring Boot 配置文件


yml 配置不同类型数据及 null

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

注意事项:value 值加单双引号

# 字符串
str1: Hello \\n Spring Boot.
str2: 'Hello \\n Spring Boot.'
str3: "Hello \\n Spring Boot."

读取一下, str1, str2, str3.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Value("${str1}")private String str1;@Value("${str2}")private String str2;@Value("${str3}")private String str3;@PostConstructpublic void postConstruct() {System.out.println("str1: " + str1);System.out.println("str2: " + str2);System.out.println("str3: " + str3);}
}

运行结果展示:

Spring —— Spring Boot 配置文件

# 注意事项 #

  • 字符串默认不⽤加上单引号或者双引号.
  • 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据.
  • 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思.

yml 配置对象

比如: 我们配置一个学生对象

student:id: 1name: Gujiuage: 18

或者使用行内写法

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

Spring —— Spring Boot 配置文件

读取配置对象

这个时候就不能用 @Value 来读取配置中的对象了,此时要使用另⼀个注解 @ConfigurationProperties 来读取

# 首先要创建一个实体类:

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

Spring —— Spring Boot 配置文件

# 调用类代码

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Autowiredprivate Student student;@PostConstructpublic void postConstruct() {System.out.println(student);}
}//运行结果: Student(id=1, name=Gujiu, age=18)

yml 配置集合

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

mynames:name:- Gujiu- GUJIU- gugu

或者使用行内写法

mynames: {name: [Gujiu,GUJIU,gugu]}

Spring —— Spring Boot 配置文件

读取配置对象

和读取对象一样, 使用 @ConfigurationProperties 来读取

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

properties VS yml

  • 二者都是 Spring Boot 的配置文件, 二者的诞生时间是不同的. properties 是默认的配置文件, 诞生的比较早. yml 是后来才出现的另一种标记语言的配置文件.
  • properties 是以 key=vaule 的形式配置的键值类型的配置文件, 而 yml 使用的类似 JSON 格式的树形配置方式进行配置的. yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用 “: ” 英文冒号加空格的方式设置,并且空格不可省略.
  • properties 为早期并且默认的配置文件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题
  • yml 通用性更好, 支持更多语言,如 Java、Go、Python 等,如果是云服务器开发,可以使用一份配置⽂件作为 Java 和 Go 的共同配置文件.
  • yml 功能比较强大, 支持更多的数据类型, 对中文的兼容性非常好.

设置不同环境的配置文件

  1. 创建不同环境的配置文件:

    • application-dev.yml (开发环境)
    • application-prod.yml (生产环境)
  2. application.yml 中设置运行环境:

    # 开发环境
    spring:profiles:active: dev
    
    # 生产环境
    spring:profiles:active: prod
    

🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
在这里插入图片描述
在这里插入图片描述

这里是Gujiu吖!!感谢你看到这里🌬

祝今天的你也

开心满怀,笑容常在。