在 Spring 项目中,我们必须自行创建 Spring 的配置文件,通常命名为 "spring-config.xml" 。但在 SpringBoot 中无需自行创建,在 SpringBoot 项目创建时就存在了即 application .properties文件。它的用处:
- 设置项目的启动端口
- 设置数据库连接信息
- 发现和定位普通日志或异常日志
- 第三方的密钥调用信息等
SpringBoot 的配置文件有两种格式即以 .properties 为后缀和以 .yml 为后缀。可分别理解为老版与新版,且两种配置文件能够共存,但 .properties后缀文件优先级较高。下面我就来讲解两种配置文件。
目录
[1. properties文件](#1. properties文件)
[1.1 properties 的基础语法](#1.1 properties 的基础语法)
[1.2 读取properties文件](#1.2 读取properties文件)
[1.3 设置热部署](#1.3 设置热部署)
[1.4 properties 缺点](#1.4 properties 缺点)
[2. yml文件](#2. yml文件)
[2.1 yml 语法格式](#2.1 yml 语法格式)
[2.2 读取yml文件](#2.2 读取yml文件)
[2.3 yml配置对象](#2.3 yml配置对象)
1. properties文件
首先,我们在创建好 SpringBoot 项目后,application.properties 文件已经存在了,我们可以在 resources 底下查看。
1.1 properties 的基础语法
properties 文件内使用的内容是以键值对的形成,键和值之间使用 **=**进行连接,注释使用 # 开头,如将端口号设置为 8081。
此时,我们在项目的 java 路径底下创建一个 TestControler 类来使用端口 8081 来运行 SpringBoot项目,代码如下:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@ResponseBody
public class TestController {
@RequestMapping("/sayHi")
public String sayHi() {
return "Hello SpringBoot";
}
}
运行代码并在浏览器中输入localhost:8081/sayHi 结果如下:
1.2 读取properties文件
此外,在 properties 文件中可以自定义内容,如下属内容按照键值对的形式定义即可,获取方法是使用过 @Value 注释,格式为:@Value("${路径}")。
@Controller
@ResponseBody
public class TestController {
@Value("${my.path}")
private String path ;
@RequestMapping("/sayHi")
public String sayHi() {
return "Hello SpringBoot" + path;
}
}
1.3 设置热部署
当我们每次修改代码后,都需要重新启动项目才能达到效果,因此我们可以热部署一下,使项目不用重启程序也能执行。以下为设置步骤:
(1) 下载 EditStarters
先在 Settings 的 Plugins 中下载 EditStarters ,这样我们在 pom.xml中就能很轻松的添加一些框架和支持。
(2)添加 springboot-dev-tool 框架
在 pom.xml 文件中空白处右击,并点击 Generate
再点击 Edit Starters
最后按照下面步骤添加即可。
(3)启用Build project automatically 功能
(4)开启热部署
1.4 properties 缺点
当我们想使用某个功能时,很多数据会重复。如连接数据库时,下图所示:
我们发现每行都写了 spring.datasource ,因此我们可以使用 yml 文件来避免重复数据,由于 yml 文件的特定格式。
2. yml文件
yml 是 YAML 的缩写,全称为"YAML Ain't Markup Language ",意为"另一种标记语言"。因此,你在项目中 以 .yml 或者 .yaml 结尾都行。它的优点:
可读性较高,写法简单,语法与JSON类似
yml支持多种数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
yml 支持多种编程语言,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中
2.1 yml 语法格式
由于 yml 是树形结构,它是以键值对的形式组成的,key 和 value 之间使用 : 号 + 空格的形式组成。
yml 连接数据库:
相比上述使用 properties文件,更为简洁但需要注意的格式不能出错。
2.2 读取yml文件
也是通过 @Value 注解来获取,语法为**@Value("${路径}")**,具体讲解在 1.2 读取properties文件 中。
2.3 yml配置对象
使用 @ConfigurationProperties注解:
@ConfigurationProperties 注解在Java 中的作用是将配置文件中的属性绑定到Java类上,从而简化配置管理和提高可读性。它主要用于 Spring 框架中,特别是 SpringBoot 应用。通过使用 @ConfigurationProperties ,可以将 application.properties 或 application.yml 中的配置属性映射到Java类的属性上,实现配置的自动装配和验证
我们在 yml 文件中可创建一个对象,如下图所示。
创建一个类 User ,并使用Configurationproperties("对象名称") 注解。并且将该类添加类注解,加类注解是为了 SpringBoot 项目启动时,被该注解的内容也能被加载。
@ConfigurationProperties("user")
@Component
public class User {
int id;
int age;
@Override
public String toString() {
return "User{" +
"id=" + id +
", age=" + age +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
再创建一个 UserController 类用来获取到 User 对象。解释 @PostConstruct注解:
@PostConstruct是Java中的一个注解,用于标注在方法上,该方法会在类的构造函数执行完毕后、其它方法执行前执行。该注解属于**
javax.annotation
**包,需要Java SE 5.0版本以上才支持。常见的用途是在Spring框架中,用于执行一些初始化操作,例如初始化一些资源,加载配置文件等。
@Component
public class UserController {
@Autowired
private User user;
@PostConstruct
public void showUser() {
System.out.println(user);
}
}
运行项目后:
以上就是 yml 配置一个对象的流程,当然 yml还能配置集合等其他内容,感兴趣可以自行搜索资料。
今天的博客到这里就结束了,感谢各位的观看。