likes
comments
collection
share

教你如何使用 SpringBoot 的配置文件

作者站长头像
站长
· 阅读数 42

1.配置文件的作用

1.1 什么是配置文件?

  Spring Boot 配置文件是一种用于配置 Spring Boot 应用程序的外部化配置方式,可以通过在应用程序中使用不同的配置文件来控制应用程序的行为,而无需在代码中进行硬编码。

  它的作用:

  • 数据库的连接信息(包含⽤户名和密码的设置);
  • 项⽬的启动端⼝;
  • 第三⽅系统的调⽤秘钥等信息;
  • ⽤于发现和定位问题的普通⽇志和异常⽇志等。

2. 配置文件的格式

  在我们用 IDEA 创建了一个 SpringBoot 项目后👆,会默认地为我们创建一个.properties格式的配置文件:

教你如何使用 SpringBoot 的配置文件

  Spring Boot 支持多种配置文件格式,例如:

  • Properties 格式文件:.properties 文件是键值对的集合,适合用于简单的配置。
  • YAML 格式文件:.yml 文件采用缩进的方式表示层次结构,适合用于复杂的配置。

(它们的语法后文介绍)

  .properties配置文件与.yml配置文件可以同时存在在同一个项目中;但是.properties配置文件的优先级更高,比如:.properties配置文件、.yml配置文件都配置了端口server.port,那么这时以 .properties 中的配置为主,加载完.properties 后,然后再加载yml的其它配置。

3. properties 配置文件

3.1 properties 配置文件的基本语法

3.1.1 系统配置项

  properties 是以键值的形式配置的,keyvalue 之间是以“=”连接的,下面是配置程序的端口号(默认端口号是8080):

# 配置项目的端口号
server.port=9090
教你如何使用 SpringBoot 的配置文件

  像server.port这样的字段是属性,属性是官方定好了的,属性文档:常见应用程序属性 (spring.io)

  我们创建一个类,来测试配置是否成功:

教你如何使用 SpringBoot 的配置文件
@Controller
@ResponseBody //表示可以返回非静态页面的内容
public class TestController {
    @RequestMapping("/hi")//路径
    public String hi(){
        return "Hello World";
    }
}

  程序运行后,可以看到端口号已经修改成功了,我们浏览器打开http://localhost:9090/hi看有没有输出。

教你如何使用 SpringBoot 的配置文件    教你如何使用 SpringBoot 的配置文件

3.1.2 自定义配置项

  配置文件中可以自定义配置,也就是官方文档中没有的属性:

# 配置项目的端口号
server.port=9090

#用户自定义配置项
hi=hello
test.hi=test_hello //可以加 . 

3.2 properties 配置文件乱码问题

  上面的配置文件中加了中文注释:

教你如何使用 SpringBoot 的配置文件

  如果你没有换字符集,重启IDEA后可能会乱码,解决方法:

  1. 设置里面搜索,然后换UTF-8

教你如何使用 SpringBoot 的配置文件

  1. 第二个设置相同的操作:
教你如何使用 SpringBoot 的配置文件教你如何使用 SpringBoot 的配置文件

 看下面的位置有没有 UTF-8,有的话就成功了。

教你如何使用 SpringBoot 的配置文件
  1. 删除当前的配置文件,重新创建。

3.3 读取 properties 配置文件的内容

  读取 properties 配置文件是可以读取其中的所有内容,不管是系统的还是自定义的,格式如下:

    @Value("${属性名}") //取出来的是它的值
    public/private...  类型 变量;
教你如何使用 SpringBoot 的配置文件

  

教你如何使用 SpringBoot 的配置文件

  如果加了层级,这里也要跟着加:

教你如何使用 SpringBoot 的配置文件    教你如何使用 SpringBoot 的配置文件

4. yml 配置文件

4.1 为什么会有 yml 配置文件?

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

4.2 yml 的基本语法

  1. 注释:以 # 开头的行表示注释,整行都会被忽略。
  2. 键值对:以键值对的形式表示数据,使用冒号(:)分隔键和值。
key: value #要加空格
  1. 映射:使用缩进来表示映射中的数据结构,可以嵌套多层。
parent:
  child1:
    key1: value1     #相当于properties中的:parent.child1.key1=value1
    key2: value2

  我们先创建一个 yml 配置文件(把application.properties给注释掉,容易冲突)。

教你如何使用 SpringBoot 的配置文件

  在 yml 中配置端口号:

# 配置端口号 8888前一定要加空格!!!
server:
  port: 8888  

教你如何使用 SpringBoot 的配置文件

改一下前面的代码,并运行:

教你如何使用 SpringBoot 的配置文件

修改端口成功:

教你如何使用 SpringBoot 的配置文件

来看看分别用 properties yml 来连接数据库的伪代码:

yml:

# 数据库连接配置 
spring:
  datasource:
    url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
    username: myuser
    password: mypass

properties:

# 数据库连接配置 
spring.datasource.url=jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
spring.datasource.username=myuser 
spring.datasource.password=mypass

  可以看到 ymlproperties 更简洁。

4.3 yml 配置不同数据类型

# 字符传类型
mystr1: hello \n world    # 原样输出
mystr2: 'hello \n world'  # 原样输出
mystr3: "hello \n world"  # 中间会换行
# 布尔值
boolean.value1: true
boolean.value2: false

# 整数
int.value: 100
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制

# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法

# Null,~代表null
null.value: ~

4.3 读取 yml 配置内容

  读取方法与读取 properties 配置文件的一样:

教你如何使用 SpringBoot 的配置文件

教你如何使用 SpringBoot 的配置文件

4.4 在 yml 中配置对象

  

# 配置一个对象
student:
  id: 1
  name: zhangsan
  age: 20
# 也可以这么写
student1: {id: 2,name: lishi,age: 20}

4.4.1 读取配置文件中的对象

  1. 创建一个类,其属性与配置文件中的属性一一对应,并且完善其get、set方法。
  2. 给这个类加上类注解
  3. 加一个@ConfigurationProperties("配置文件中对象的名称")

教你如何使用 SpringBoot 的配置文件

  1. 注入到变量中

教你如何使用 SpringBoot 的配置文件

结果:

教你如何使用 SpringBoot 的配置文件

4.5 在 yml 配置 List 集合

  方法与上面一样

# 配置一个集合
listtypes:
  list:  # 集合名
    - str1 # 元素 下同
    - str2
    - str3
    - str4

教你如何使用 SpringBoot 的配置文件

教你如何使用 SpringBoot 的配置文件

结果:

教你如何使用 SpringBoot 的配置文件

5. 设置不同环境的配置⽂件

  一般在公司中,要求有多个不同的配置文件,比如:

  • 主配置文件:application.yml
  • 开发环境的配置文件: application-dev.yml
  • 测试环境的配置文件: application-test.yml
  • 生产环境的配置文件: application-prod.yml

(application-xxx.yml xxx 位置可以改变)

假如开发环境端口为:8081

测试环境端口为:9090

生产环境端口为:9111

教你如何使用 SpringBoot 的配置文件

每个配置文件写自己的配置,如果要切换那么就对主配置文件进行修改:

# 任意更换环境
spring:
  profiles:
    active: test 
# 这里的值对应文件后缀,此时为测试环境的配置 端口为 9090
转载自:https://juejin.cn/post/7228888046870806565
评论
请登录