文章目录

  • 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;
}