文章目录
- SpringBoot基础配置
- 1. 属性配置
- 2. 配置文件
- 3. yaml
- 1. 介绍
- 2. 语法规则
- 3. 数据读取
SpringBoot基础配置
1. 属性配置
SpringBoot默认配置文件application.properties 通过键值对配置对应属性
SpringBoot中导入对应的starter后,提供对应的属性配置
Idea提供属性提示,可通过关键字得到属性名
例如:
- 修改服务器端口:
server.port=80
- 关闭运行日志图标:
spring.main.banner-mode=off
- 设置日志相关:
logging.level.root=debug
SpringBoot内置属性可通过官方文档中参考文档的Application Properties 查询
2. 配置文件
1.SpringBoot提供三种配置文件格式
- properties(默认格式)
server.port=80
- yml(主流格式)
server:
port: 81
- yaml
server:
port: 82
2.SpringBoot配置文件加载顺序
**application.properties ** > application.yml > application.yaml
注意:
不同配置文件中相同配置按加载优先级相互覆盖,不同配置全部保留
3.指定SpringBoot配置文件
在未指定为配置文件的yml或yaml中书写属性时,Idea将不会提供属性提示
解决步骤:
- Setting -> Project Structure -> Facets
- 选中对应项目
- Customize Spring Boot
- 选择配置文件
3. yaml
1. 介绍
YAML (YAML Ain’t Markup Language)是一种数据序列化格式
- 优点:
- 容易阅读
- 容易与脚本语言交互
- 以数据为核心,重数据格式
- YAML文件扩展名
- .yml(主流)
- .yaml
2. 语法规则
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾用冒号结束
- 用缩进表示层级关系且不允许使用Tab,同层级左侧对其
- 属性值与属性名间用冒号加空格作为分隔
- # 表示注释
- 核心规则: 数据前用空格与冒号隔开
- 字面值表示方式:
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
null: ~ #使用~表示null
string: HelloWorld #字符串可以直接书写
string2: "Hello World" #可以使用双引号包裹特殊字符
date: 2018-02-17 #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 #时间和日期之间使用T连接,最后使用+代表时区
- 数组表示方式:
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
likes: [王者荣耀,刺激战场] #数组书写缩略格式
users: #对象数组格式
- name: Tom
age: 4
- name: Jerry
age: 5
users: #对象数组格式二
-
name: Tom
age: 4
-
name: Jerry
age: 5
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ] #对象数组缩略格式
3. 数据读取
使用@Value读取单个数据,属性名引用方式: ${一级属性名.二级属性名}
- 在配置文件中可以用${属性名}方式引用属性值
baseDir: /usr/local/fire
center:
dataDir: ${baseDir}/data
tmpDir: ${baseDir}/tmp
logDir: ${baseDir}/log
msgDir: ${baseDir}/msgDir
- 属性中出现特殊字符可用双引号包裹作为字符解析
lesson: "Spring\tboot\nlesson"
封装全部数据到Environment对象
- 使用Environment对象封装全部配置信息
- 使用@Autowired自动装配数据到Environment对象中
- 配置数据
lesson: SpringBoot
server:
port: 82
enterprise:
name: itcast
age: 16
tel: 4006184000
subject:
- Java
- 前端
- 大数据
- 读取数据
@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!”;
}
}
自定义对象封装指定数据
- 使用**@ConfigurationProperties**注解绑定配置信息到封装类
- 封装类需要定义为Spring管理的Bean,才能完成属性注入
- 配置数据
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
- 读取数据
@Component
@ConfigurationProperties(prefix = "datasource")
public class DataSource {
private String driverClassName;
private String url;
private String userName;
private String password;
}