目录
一、配置文件
1、配置文件格式
2、自动提示功能失灵解决方案
3、SpringBoot配置文件加载顺序
二、yaml
1、yaml介绍
2、yaml语法规则
3、yaml数组数据
4、yaml数据读取
三、多环境开发配置
1、多环境启动配置
2、多环境启动命令格式
3、多环境开发控制
四、配置文件分类
1、SpringBoot中4级配置文件
2、作用
一、配置文件
1、配置文件格式
SpringBoot提供了多种属性配置方式
application.properties
server.port=80
application.yml
server:
port: 81
application.yaml
server:
port: 82
2、自动提示功能失灵解决方案
(1)文件-项目结构
(2)Facet-选项目对应spring-点spring自定义按钮
(3)选中没有导入的配置文件-确认
3、SpringBoot配置文件加载顺序
application.properties > application.yml > application.yaml
1. SpringBoot核心配置文件名为application
2. SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性
二、yaml
1、yaml介绍
(1)YAML(YAML Ain't Markup Language),一种数据序列化格式
(2)优点:
容易阅读
容易与脚本语言交互
以数据为核心,重数据轻格式
(3)YAML文件扩展名
.yml(主流)
.yaml
2、yaml语法规则
(1)大小写敏感
(2)属性层级关系使用多行描述,每行结尾使用冒号结束
(3)使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
(4)属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
(5)# 表示注释
(6)核心规则:数据前面要加空格与冒号隔开
enterprise:
name: csdn
age: 16
tel: 1333333333
3、yaml数组数据
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
enterprise:
name: csdn
age: 16
tel: 1444444444444
subject:
- Java
- 前端
- 大数据
4、yaml数据读取
lesson: SpringBoot
server:
port: 82
enterprise:
name: csdn
age: 16
tel: 888888888
subject:
- Java
- 前端
- 大数据
(1)使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
@RestController
@RequestMapping("/books")
public class BookController {
@Value("${lesson}")
private String lessonName;
@Value("${server.port}")
private int port;
@Value("${enterprise.subject[1]}")
private String[] subject_01;
}
(2)封装全部数据到Environment对象
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private Environment env;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(env.getProperty("lesson"));
System.out.println(env.getProperty("enterprise.name"));
System.out.println(env.getProperty("enterprise.subject[0]"));
return "hello , spring boot!";
}
}
(3)自定义对象封装指定数据
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String name;
private Integer age;
private String[] subject;
// 需要getter setter toString方法
}
(4)自定义对象封装数据警告解决方案
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
三、多环境开发配置
1、多环境启动配置
(1)yaml文件多环境启动
(2)properties文件多环境启动
#主启动配置文件 application.properties
spring.profiles.active=pro
#环境分类配置文件 application-pro.properties
server.port=80
#环境分类配置文件 application-dev.properties
server.port=81
#环境分类配置文件application-test.properties
server.port=82
2、多环境启动命令格式
(1)带参数启动SpringBoot
java –jar springboot.jar --spring.profiles.active=test
java –jar springboot.jar --server.port=88
java –jar springboot.jar --server.port=88 --spring.profiles.active=test
(2)参数加载优先顺序
由低到高
3、多环境开发控制
Maven与SpringBoot多环境兼容
(1)Maven中设置多环境属性
<profiles>
<profile>
<id>dev_env</id>
<properties>
<profile.active>dev</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pro_env</id>
<properties>
<profile.active>pro</profile.active>
</properties>
</profile>
<profile>
<id>test_env</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
(2) SpringBoot中引用Maven属性
spring:
profiles:
active: ${profile.active}
(3)执行Maven打包指令
Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中
解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符
(4) 对资源文件开启对默认占位符的解析
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>
四、配置文件分类
1、SpringBoot中4级配置文件
1级: file :config/application.yml 【最高】
2级: file :application.yml
3级:classpath:config/application.yml
4级:classpath:application.yml 【最低】
2、作用
1级与2级留做系统打包后设置通用属性
3级与4级用于系统开发阶段设置通用属性