|
|
JavaEE
Spring —— Bean 作用域和生命周期
Spring —— Spring Boot 创建和使用
目录
Spring Boot 配置文件
- 系统使用的配置文件 (系统配置文件), 如端口号的配置, 链接数据库的配置
- 用户自定义配置文件
Spring Boot 配置文件格式
.properties.yml (yaml)

# 注意事项 #
- 当一个项目中, 存在两种格式的配置文件, 并且两个配置文件间中设置了相同的配置项, 但之不同时.
.properties配置文件的优先级最高, 但加载完 .properties 文件之后, 也会加载.yml文件的配置信息. - 理论上讲
.properties可以和.yml共存, 但实际业务中, 我们通常会采用一种统一的配置文件格式, 这样可以更好的维护.
properties配置文件
properties 基本语法
# properies 以键值的形式配置的: key=vaule.
# 设置端口号
server.port=8888

# 我们还可以自定义配置项
myTest=gujiu
我们还可以读取配置项中的内容, 使用 @Value 注解来实现, @Value 注解使用 “${}” 的格式读取.
@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
@Value("${myTest}")
private String mytest;
@RequestMapping("/getconf")
public String getConfig() {
return mytest;
}
}
properties 缺点
当我们想配置数据库的时候.
# 连接数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
从上述配置 key 中可以看出, properties 配置文件中会有很多的冗余信息.

想要解决这个问题,就可以使用 yml 配置⽂件的格式化了.
yml 配置文件
yml 优点
yml是一个可读性高, 写法简单, 易于理解, 他的语法和JSON语言类似.yml支持更多的数据类型, 它可以简单表达清单 (数组), 散列表, 标量等数据形态, 它使用空白符号缩进和大量依赖外观的特色, 特别时候来表达或编辑数据结构, 各种配置文件等.yml支持更多的编程语言, 它不只是Java中可以使用在 Golang, PHP, Python, Ruby, JavaScripy, Perl 中.
yml 基本语法
yml 是树形结构的配置文件: key: vaule .
# 配置端口
server:
port: 6666
# 自定义配置
mytest2: gugu
同样是使用 @Value 注解使用 “${}” 的格式读取.
@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
@Value("${mytest2}")
private String myTest;
@RequestMapping("/getconf2")
public String getConfig2() {
return myTest;
}
}

当我们配置数据库连接
# 配置数据库连接
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
username: root
password: 123456

yml 配置不同类型数据及 null
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~
注意事项:value 值加单双引号
# 字符串
str1: Hello \n Spring Boot.
str2: 'Hello \n Spring Boot.'
str3: "Hello \n Spring Boot."
读取一下, str1, str2, str3.
@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
@Value("${str1}")
private String str1;
@Value("${str2}")
private String str2;
@Value("${str3}")
private String str3;
@PostConstruct
public void postConstruct() {
System.out.println("str1: " + str1);
System.out.println("str2: " + str2);
System.out.println("str3: " + str3);
}
}
运行结果展示:

# 注意事项 #
- 字符串默认不⽤加上单引号或者双引号.
- 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据.
- 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思.
yml 配置对象
比如: 我们配置一个学生对象
student:
id: 1
name: Gujiu
age: 18
或者使用行内写法
student: {id: 1,name: Gujiu,age: 18}

读取配置对象
这个时候就不能用 @Value 来读取配置中的对象了,此时要使用另⼀个注解 @ConfigurationProperties 来读取
# 首先要创建一个实体类:
@Component
@ConfigurationProperties(value = "student")
@Data
public class Student {
private int id;
private String name;
private int age;
}

# 调用类代码
@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
@Autowired
private Student student;
@PostConstruct
public void postConstruct() {
System.out.println(student);
}
}
//运行结果: Student(id=1, name=Gujiu, age=18)
yml 配置集合
配置文件也可以配置 list 集合
mynames:
name:
- Gujiu
- GUJIU
- gugu
或者使用行内写法
mynames: {name: [Gujiu,GUJIU,gugu]}

读取配置对象
和读取对象一样, 使用 @ConfigurationProperties 来读取
@Component
@ConfigurationProperties("mynames")
@Data
public class ListConfig {
private List<String> name;
}
properties VS yml
- 二者都是
Spring Boot的配置文件, 二者的诞生时间是不同的.properties是默认的配置文件, 诞生的比较早.yml是后来才出现的另一种标记语言的配置文件. - properties 是以
key=vaule的形式配置的键值类型的配置文件, 而 yml 使用的类似JSON格式的树形配置方式进行配置的. yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用 “: ” 英文冒号加空格的方式设置,并且空格不可省略. properties为早期并且默认的配置文件格式,但其配置存在⼀定的冗余数据,使⽤yml可以很好的解决数据冗余的问题yml通用性更好, 支持更多语言,如 Java、Go、Python 等,如果是云服务器开发,可以使用一份配置⽂件作为 Java 和 Go 的共同配置文件.yml功能比较强大, 支持更多的数据类型, 对中文的兼容性非常好.
设置不同环境的配置文件
-
创建不同环境的配置文件:
- application-dev.yml (开发环境)
- application-prod.yml (生产环境)
- …
-
在
application.yml中设置运行环境:# 开发环境 spring: profiles: active: dev# 生产环境 spring: profiles: active: prod
|
|
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!












