0


SpringBoot 配置文件

在这里插入图片描述

1. 配置文件作用

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:

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

想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤
于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的

2. 配置文件的分类

  1. 系统的配置文件,比如连接字符串,比如日志的相关设置,系统定义好的.
  2. 用户自定义的

3. 配置文件的格式

Spring Boot 配置⽂件主要分为以下两种格式:

  1. .properties
  2. .yml

3.1 规则

  1. 一个项目可以存下两种配置文件(properies 和 yml),但是不建议一个项目中出现两种配置文件.
  2. 当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以 properies 为主(忽略 yml 中配置)

4. properties 配置文件说明

properties 配置⽂件是最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件

4.1 properties 基本语法

properties 是以

键值的形式

配置的,key 和 value 之间是以

“=”

连接的,如:
在这里插入图片描述

注意:
  1. 配置文件注释用 "#"
  2. 如果出现中文乱码,全设置为utf8:在这里插入图片描述在这里插入图片描述
  3. 修改了还是中文乱码,需要将原来的 application.properties 删除掉,重新在创一个 application.properties . 因为之前的配置文件已经是不支持中文编码的文件格式化,设置编码在创建 application.properties 之后,所以,后设置的编码不会改变原来的旧的 application.properties 文件,所以需要先将原来的配置先删了在重新创建

4.2 读取单个配置文件

使用

@Value

注解来实现,

@Value

注解使⽤

“${}”

的格式读取,如下代码所示:

importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;@ControllerpublicclassUserController{@Value("${server.port}")privateString port;@ResponseBody//返回一个非静态页面的数据@RequestMapping("/sayhi")//设置路由地址publicStringsayHi(){return"server.port:"+ port;}}

在这里插入图片描述在这里插入图片描述

5. yml 配置文件说明

yml

YAML

是缩写,它的全称

Yet Another Markup Language

翻译成中⽂就是“另⼀种标记语⾔”。

5.1 yml 特点

  1. 写法简单,可读性高
  2. 支持更多的数据类型
  3. 跨语言使用: java/golang/高版本 python

5.2 yml 语法

yml 是树形结构的配置文件, 它的基础语法是

key: value

, 冒号后面跟着一个空格不能省略

erver:port:9090#连接数据库spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=falsename: root
      password: root

在这里插入图片描述

5.3 yml 使用进阶

5.3.1 yml 配置不同数据类型及 null

# 字符串string.value: Hello

# 布尔值,true或falseboolean.value:trueboolean.value1:false# 整数int.value:10int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制# 浮点数float.value:3.1111float.value1:314159e-5# 科学计数法# Null,~ 代表nullnull.value:~

在这里插入图片描述

5.3.2 yml配置读取

yml 读取配置的⽅式和 properties 相同,使⽤

@Value

注解即可,实现代码如下:
在这里插入图片描述

yml 单,双引号的问题:

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

结论:

yml 中如果使用了双引号就会按照(原)语义执行,如果不加单,双引号,或者加了单引号,那么默认会将字符串中的特殊字符进行转义,比如

 \n => \\n(转义)处理

5.3.3 配置对象读取

yml配置:

# 对象写法 1student:id:1name: 张三
  age:18# 对象写法 2student2:{id:2,name: 李四,age:20}

在这里插入图片描述

对象:

importlombok.Data;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;@Data//lombok 生成Getter Setter toString 方法@ConfigurationProperties(prefix="student")//读取配置文件中的对象@ComponentpublicclassStudent{privateint id;privateString name;privateint age;}

在这里插入图片描述

测试:

importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;@ControllerpublicclassUserController{@Value("${server.port}")privateString port;@Value("${mystring}")privateString mystring;@Value("${mystring2}")privateString mystring2;@Value("${mystring3}")privateString mystring3;@AutowiredprivateStudent student;@ResponseBody//返回一个非静态页面的数据@RequestMapping("/sayhi")//设置路由地址publicStringsayHi(){System.out.println("mystring: "+mystring);System.out.println("mystring2: "+mystring2);System.out.println("mystring3: "+mystring3);System.out.println(student);return"server.port:"+ port;}}

在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.3.4 配置集合

yml配置:

# 集合dbtypes:{name:[ mysql,sqlserver,db2 ]}

读取配置集合:

importlombok.Data;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;importjava.util.List;@Component@Data@ConfigurationProperties("dbtypes")// 读取配置文件中集合publicclassReadList{privateList<String> name;}

测试:

importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importjavax.annotation.Resource;@ControllerpublicclassUserController{@Value("${server.port}")privateString port;@Value("${mystring}")privateString mystring;@Value("${mystring2}")privateString mystring2;@Value("${mystring3}")privateString mystring3;@AutowiredprivateStudent student2;@ResourceprivateReadList readList;@ResponseBody//返回一个非静态页面的数据@RequestMapping("/sayhi")//设置路由地址publicStringsayHi(){System.out.println("mystring: "+mystring);System.out.println("mystring2: "+mystring2);System.out.println("mystring3: "+mystring3);System.out.println(student2);return"readList: "+ readList.getName();}}

在这里插入图片描述

结果:
在这里插入图片描述

yml另一种写法:

dbtypes1: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 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件
标签: spring boot java spring

本文转载自: https://blog.csdn.net/chenbaifan/article/details/125719338
版权归原作者 粉色的志明 所有, 如有侵权,请联系我们删除。

“SpringBoot 配置文件”的评论:

还没有评论