1、统一配置管理概述
①SpringBoot工程下,进行统一的配置管理,你设想设置的任何参数(端口号、项目根路径、数据库连接信息等)都集中到一个固定位置和命名的配置文件(application.properties / application.yml)中!
②配置文件应该放置在SpringBoot工程的src/main/resources目录下,这是因为该路径是默认的类路径,配置文件会被自动加载并可被应用程序访问。
2、YAML配置文件使用
2.1 概述
①是一种基于层次结构的数据序列化格式,旨在提供一种易读、人类友好的数据表示方式。
②相较于.properties配置文件的优势:
有层次结构、自我描述性、注释支持、多行文本、类型支持、更好的可读性;
2.2 语法说明
数据结构用树型结构呈现,通过缩进来表示层级
server: port: 80 servlet: context-path: /boot
连续的项目(集合)通过减号“-”来表示;键值结构里的key/value对用冒号“ :”来表示
sf: user: username: root # username:空格xxx(冒号后面要加个空格) password: 123456 gfs: - 高圆圆 - 范冰冰 - 赵丽颖 info: age: 18 name: sf
Yaml配置文件的扩展名是yml或yaml
2.3 YAML配置文件数据注入
①通用配置和(二.1案例)一样
②创建application.yaml配置文件
③根据上述YAML配置文件配置格式配置相关数据
例子: # springboot规定的配置,有特殊含义 server: port: 80 servlet: context-path: /boot # 自定义配置 sf: user: username: root # username:空格xxx(冒号后面要加个空格) password: 123456 gfs: - 高圆圆 - 范冰冰 - 赵丽颖 info: age: 18 name: sf
④根据自定义配置在pojo包下创建User类,并设置对应的属性
⑤将配置数据注入属性中,有两种方式:
- @Value注入和批量配置读取
- 注意:@Value(key必须写全了)、@Value只能读取单个值
- 批量配置读取:在需要注入数据的类上加上 @ConfigurationProperties(prefix = "通用前缀") 注解
- @ConfigurationProperties(prefix = "sf.user") ,prefix后写通用的前缀
批量配置读取优势:方便 ,不用一个一个读取;可以给集合类型赋值
例子: @Data @Component @ConfigurationProperties(prefix = "sf.user") //批量配置读取 public class User { //@Value("${sf.user.username}") //di注入 要想注入,必须将该类放入ioc容器中,即在该类上加上@Component注解 private String username; //@Value("${sf.user.password}") //di private String password; //@Value("${sf.user.gfs}") 会出错,@Value只能读单个值 private List<String> gfs; }⑥编写对应的UserController代码:
例子: @RestController //返回json数据 @RequestMapping("user") public class UserController { @Autowired private User user; @GetMapping("show") public User show(){ return user; } }