文章目录
- 前言
- 一.Spring配置文件
- 1.1 配置文件的作用
- 1.2 配置文件的类型
- 二.properties配置⽂件说明
- 2.1 基本语法
- 2.2 读取配置文件
- 三.yml 配置⽂件说明
- 2.1 基本语法
- 2.2 读取配置文件
- 2.3 注意事项
前言
上篇文章我们介绍了什么是SpringBoot和怎么去创建一个SpringBoot项目,现在我们具体创建之后,我们要进一步去介绍SpringBoot,就要深入了解一下SpringBoot的配置文件了,Spring Boot配置文件的重要性是因为配置文件在Spring Boot应用程序中扮演着关键的角色,它是配置应用程序行为的核心组成部分。
一.Spring配置文件
1.1 配置文件的作用
整个项目中所有重要的数据都是在配置文件中配置的,比如:·数据库的连接信息(包含用户名和密码的设置);
- 项目的启动端口;
- 第三方系统的调用秘钥等信息;
- 用于发现和定位问题的普通日志和异常日志等。
从这里可以看出,配置文件在SpringBoot当中是十分重要的.
1.2 配置文件的类型
在Spring Boot中,可以使用两种类型的配置文件:.properties和.yml(YAML)。这两种类型的配置文件都可以用于配置应用程序的属性和行为,但它们有一些语法和格式上的差异。
在Spring Boot中,可以使用两种类型的配置文件:.properties和.yml(YAML)。这两种类型的配置文件都可以用于配置应用程序的属性和行为,但它们有一些语法和格式上的差异。
- properties配置文件: 这是一种常见的配置文件格式,使用键值对的方式表示属性和属性值。每一行表示一个配置项,用等号(=)将键和值分隔。例如:
# application.propertiesserver.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
- yml配置文件: 这是一种基于缩进格式的配置文件,使用层级结构来表示属性和属性值。.yml文件更加易读和直观,适合复杂的配置场景。例如:
# application.ymlserver:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: myuserpassword: mypassword
这里做出两点特殊总结:
1.理论上讲properties可以和 yml一起存在于一个项目当中,当properties和yml一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties和 yml中都配置了“server.port"那么这个时候会以 properties中的配置为主,也就是.properties配置文件的优先级最高,但加载完.properties文件之后,也会加载.yml 文件的配置信息。
2.虽然理论上来讲.properties可以和.yml共存,但实际的业务当中,我们通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰一样,不管是老款的服装还是新款的服装,一定要统一了才好看。
二.properties配置⽂件说明
Properties文件是一种常见的配置文件格式,它使用键值对的方式来表示配置属性和属性值。在Spring Boot中,.properties配置文件用于配置应用程序的属性和行为。
2.1 基本语法
properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
2.2 读取配置文件
如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取,如下代码所示:
@Controller
@ResponseBody //加在类上,表示当前页面中所有方法返回的都是非静态页面的数据
public class TestController {@Value("${server.port}")private int port;//项目启动之后,就会把这个东西装进spring@RequestMapping("/sayhi") //=WebServlet(/url) localhost:8080/test/sayhipublic String sayHi(){return "Hello World ->"+port;}
}
三.yml 配置⽂件说明
yml是一个可读性高,写法简单、易于理解,它的语法和JSON语言类似。
yml支持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。
yml支持更多的编程语言,它不止是 Java中可以使用在Golang、PHP、Python、Ruby.JavaScript、Perl中。
2.1 基本语法
yml是树形结构的配置文件,它的基础语法是“key: value”,注意key和 value 之间使用英文冒汗加空格的方式组成的,其中的空格不可省略。例如语法如下:
# application.propertiesserver.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
2.2 读取配置文件
读取.yml配置文件与读取.properties配置文件类似,可以使用@ConfigurationProperties注解或@Value注解来将配置属性注入到应用程序中。具体例子如下:
代码如下:
@Controller
@ResponseBody //加在类上,表示当前页面中所有方法返回的都是非静态页面的数据
public class TestController {@Value("${server.port}")private int port;//项目启动之后,就会把这个东西装进spring@RequestMapping("/sayhi") //=WebServlet(/url) localhost:8080/test/sayhipublic String sayHi(){return "Hello World ->"+port;}
}
2.3 注意事项
- 读取的问题
接下来会使用一个例子,来说明:
具体代码如下:
@Controller
public class TestController {@Value("${string.str1}")private String str1;@Value("${string.str2}")private String str2;@Value("${string.str3}")private String str3;@PostConstructpublic void postConstruct(){System.out. println ( "string.str1: " +str1);System.out. println( "string.str2: " + str2);System.out. println("string.str3:" +str3);}}
从上述结果可以看出:
字符串默认不用加上单引号或者双引号。
单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据。
双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。
- 可配置对象
我们还可以在yml中配置对象,如下配置︰
student:id: 1name: zhangsanage : 18
代码如下:
@ConfigurationProperties("student")
@Component
@Setter
@Getter
@ToString
public class Student {private int id;private String name;private int age;
}
@Controller
public class StudentController {@Autowiredprivate Student student;@PostConstructpublic void doPostConstruct(){System.out.println(student);}}
- 其他更多的配置方法
Spring Boot读取配置文件的N种方法
https://juejin.cn/post/7132641888166739982
更多系统配置项
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html