0


Spring Boot 配置文件

文章目录

配置文件的作用就是

保存项目中的所有重要的数据信息以及一些通用配置

比如启动一个项目,默认情况下 Tomcat 会占用 8080 端口,但是有些时候会因为 8080 端口已经被占用了,导致启动项目失败,解决办法要么是先查到占用端口的进程,然后从任务管理器中关闭进程,要么就是就重新设置端口号,然而一般的重置端口号的过程并不方便。

但是在配置文件中只要写一句 server.port=XXXX,启动项目,就可以发现端口号已经被改成 XXXX ,方便的很

还有

数据库的连接信息

第三方系统的调用密钥

等信息、

日志信息的配置

等等

Spring Boot 常用的配置文件的格式有两种:

  • .properties
  • .yml

这两种配置文件的格式是可以同时存在于一个项目中的,如果两配置文件中有同样的配置(比如都配置端口信息),此时会以

 .properties 格式

配置的端口为主,其

优先级会更高

加载完 .properties 文件后,就会加载 .yml 文件

一个项目中可以存在很多 properties 文件(yml 文件),名字可以随便起,但是 Spring Boot 项目启动时,只会自动加载名字为

application

的配置文件

实际业务中,一般会统一使用其中一种配置文件的格式,可以降低故障率

官网:查看更多系统配置项

一、properties 文件

在学习 .properties 文件之前,需要先装一个插件

Spring Tools

,yml 文件中是有代码提示的但是 properties 文件没有(指的是社区版),安装了该插件后,就会有相应的代码提示

在这里插入图片描述

1.1 properties 基本语法

properties 是以键值对的形式配置的,key 和 value 之间只要

"="

连接

key=value

注意:等号

两边不要出现空格

,value

后面也不要出现空格
# 端口号设置
server.port=9090
# 数据库连接信息设置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/OJSystem
spring.datasource.username=root
spring.datasource.password=1111

1.2 读取配置文件

在项目中读取配置文件中的内容,可以通过

@Value

注解

该注解需要使用

"${}"

的格式进行读取

代码展示

@Controller@ResponseBody@RequestMapping("/index")publicclassUController{@Value("${server.port}")privateInteger port;@RequestMapping("/port")publicStringfunc(){return"port:"+ port;}}

注意

@Value 注解中的内容如果用双引号直接包含起来,表示设置一个具体的 value 值而不是配置文件中的 key ;

只有加上 ${} 才会读取到配置信息中的 key 值(server.port),将 key 值对应的 value 值(9090)赋值给 port 变量;

结果展示

在这里插入图片描述

1.3 properties 缺点

在上面配置数据库的信息时,会发现有很多的

代码冗余

,每条配置信息前都有 spring.datasource ,可读性是比较差的

二、.yml 文件

yml 文件就很好的解决了 properties 文件的缺点,可读性高,也易于理解,还可以表达数组、对象等数据形态,而且还跨语言,除了 Java,golang、python 都可以使用该类型的配置文件

2.1 yml 基本语法

yml 是树形结构的配置文件

key: value

注意:key 和 value 之间有一个英文的冒号

":"

和一个

空格

,两者缺一不可

# 端口号设置server:port:9191# 数据库连接信息设置spring:datasource:url: jdbc:mysql://127.0.0.1:3306/OJSystem
    username: root
    password:1111

通过例子,可以发现 yml 文件可以很好解决 properties 文件的代码冗余问题

通过

空格缩进程度来控制层级关系

,如果为同级属性,缩进应当要一样

2.2 yml 的运用

yml 支持字面值、对象、数组等数据结构,也支持它们的复合结构

2.2.1 字面值

包括字符串、布尔类型、整形(包括各种进制)、浮点型(包括科学计数法)、null等

配置信息

# 字符串类型String: yml配置文件
# 整形myInt:666# nullmyNull:value:~# 浮点型myDouble.value:1.23

yml 文件中读取配置信息也可以使用 @Value 注解,同 properties 用法相同

代码展示

@Controller@ResponseBody@RequestMapping("/index")publicclassUController{@Value("${String}")privateString myString;@Value("${myInt}")privateInteger myInt;@Value("${myDouble.value}")privateDouble myDouble;@Value("${myNull.value}")privateObject myNull;@RequestMapping("value")publicStringfunc1(){String res ="String: "+ myString 
                +"----"+"myInt: "+ myInt 
                +"----"+"myNull.value: "+ myNull 
                +"----"+"myDouble.value: "+ myDouble;return res;}}

结果展示

在这里插入图片描述

注意:yml 中的 null 不是指值为 null ,而是指什么都没有的意思,因此打印出来内容是空的

关于字符的特殊说明

在 yml 中如果字符串使用了

双引号

进行包裹,那么写了特殊字符是

不会进行转义

的,就会按照特殊字符的方式进行处理,比如 \n 就会被当成换行符进行处理

如果字符串添加的是

单引号

或者

什么都没有

添加,就会将特殊字符

进行转义

,输入的是什么输出的就是什么,特殊字符最终只是一个普通的字符串数据

配置文件

myString:value1: Hello \n world
  value2:'Hello \n world'value3:"Hello \n world"

代码展示

@Value("${myString.value1}")privateString myString1;@Value("${myString.value2}")privateString myString2;@Value("${myString.value3}")privateString myString3;@RequestMapping("/myString")publicvoidfunc2(){System.out.println("value1: "+ myString1);System.out.println("value2: "+ myString2);System.out.println("value3: "+ myString3);}

结果显示

在这里插入图片描述

2.2.2 对象

yml 中可以配置对象,这是 properties 文件中所没有的

配置文件

# 方式一article:id:1name: 人与自然
  content: 内容简介
# 方式二article1:{id:2,name: Java发展史,content: 对Java的简介 }

注意:无论方式一还是方式二都需要在 key 和 value 间加上英文冒号以及一个空格,方式二创建对象的方式适合于属性较少时,方式一在属性较多时会更加的直观

代码展示

想要获取到配置文件中对象的信息,可以通过之前的 @Value 注解的方式,但是这样的话,对象有多少个属性,就会需要写多少个 @Value ,会非常的麻烦

所以,可以通过其他方式将对象中的内容一下子读取到某个类中,然后通过注入的方式获取到类中的信息

首先,创建一个 Article 类

通过

@ConfigurationProperties

注解来指定 Spring Boot 启动时需要将配置文件中的哪个对象赋值到该类上,其中 prefix = 可以省略

需要注意的是

一定要提供 get/set 方法

,尤其是 set 方法,如果不提供,项目启动后没有办法将配置文件中对应对象的属性赋值进来,就会报错。不提供 get 方法虽然不会报错,但是没有办法通过方法获取对象的某个属性了

属性名需要与配置文件中的属性名一一对应

,否则获取的时候就会找不到对应的属性名,结果为默认值

@Component@ConfigurationProperties(prefix ="article")publicclassArticle{privateint id;privateString name;privateString content;publicintgetId(){return id;}publicvoidsetId(int id){this.id = id;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicStringgetContent(){return content;}publicvoidsetContent(String content){this.content = content;}@OverridepublicStringtoString(){return"Article{"+"id="+ id +", name='"+ name +'\''+", content='"+ content +'\''+'}';}}

然后,进行

依赖的注入

需要使用 @Autowired 注解或者 @Resource 注解将 Article 类注入到依赖它的类中,这里使用的前者注解。注入方法这里使用的是属性注入

@Controller@ResponseBodypublicclassArticleController{@AutowiredprivateArticle article;@RequestMapping("/article")publicvoidfunc(){System.out.println(article);}}

结果展示

在这里插入图片描述

2.2.3 数组

配置文件

# 方法一book-list:books:- Java书
      - Python书
      - C++书
# 方法二booklist1:{books:[人与自然,美人鱼]}

":"

"-"

后面都需要

添加空格

拿方法一的案例来说,就相当于说有一个 Key 值为 book-list,key 值下面有一个 books 属性,该属性里面存储了三个信息:Java书、Python书、C++书

需要注意的是方法一中的命名方式,由于 SpringBoot 2.X 版本对配置文件中的命名规范有强制性的要求,不允许使用驼峰形式(比如bookList),需要按照提示说的那样使用 - 代替

代码显示

首先,创建一个 BookList 类

同样可以通过

@ConfigurationProperties

注解来指定 Spring Boot 启动时需要将配置文件中的哪个对象赋值到该类上

属性名 books 需要和配置文件中 key 为 book-list 的 value 中的属性名相对应

同样也需要

提供 get/set 方法

,这里使用了

@Data

注解。该注解来源于创建项目时引入的

lombok 依赖

,加上该注解,就可以提供 get/set 方法、 toString 方法…

@Component@ConfigurationProperties(prefix ="book-list")@DatapublicclassBooKList{privateList<String> books;}

在这里插入图片描述

然后,进行依赖的注入

@Controller@ResponseBodypublicclassListController{@AutowiredprivateBooKList booKList;@RequestMapping("/list")publicvoidgetBooks(){System.out.println(booKList.getBooks());}}

结果显示

在这里插入图片描述

三、properties 和 yml 区别总结

  • 语法格式- properties :以 key=value 的键值对形式配置的配置文件,其中 key 是以 “.” 进行分割的- yml :使用类似 json 格式的树形配置方式进行配置,使用缩进来控制层级关系,key 和 value 之间使用冒号和一个空格隔开,皆不可省略
  • 冗余问题- properties :是一种默认的,早期的配置文件格式,配置存在数据的冗余- yml :很好的解决了数据冗余现象,可读性更高,写法更简洁明了
  • 通用性- properties :只是作为 Java 语言的配置文件- yml :通用性更好,支持多种语言,Java、Go、Python…,比如做云计算使用 Go 和 Java 的时候,可以通过配置中心使用同一份配置
  • 数据类型- properties :只支持键值对数据- yml :支持列表,对象,标量等等数据类型

完~~~

标签: spring boot java spring

本文转载自: https://blog.csdn.net/weixin_46103589/article/details/125357827
版权归原作者 富春山居_ZYY 所有, 如有侵权,请联系我们删除。

“Spring Boot 配置文件”的评论:

还没有评论