yaml格式
数据格式
yaml 是一种数据序列化的格式
容易阅读 容易与脚本语言交互 以数据为核心 重数据轻格式
我们要知道他怎么书写
大小写敏感
属性层级关系使用多行描述 每行结尾使用冒号结束
使用缩进表示层级关系
同层级左侧对其 只运行使用空格
属性前面添加空格
#表示注释
同样名称的属性只能出现一次
country: china provice: beijing city: beijing area: beijing port: 8080 party: true birthday: 2003-12-04 user: name: zhudaoyang age: 21
# 多层级属性 以后使用频率比较高 a: b: c: d: e: 123 # 数组 likes1: - game - music - swim # 数组 likes2: [game,music.sleep] # 对象数组 users1: - name: gaochang age: 18 - name: zhuaishao age: 18 # 对象数组 user2: [{name:gaochang,age:18},{name:zhuaishao,age:18}]
核心规则 数据前面要加空格隔开
读取单一属性性质
用Rest模式书写
@Value注解
@Value
注解是Spring框架中的一个注解,用于将值注入到Spring Bean中。它通常用于将配置文件中的属性值注入到Spring Bean的字段或构造函数参数中。与@Autowired
和@Qualifier
等注解相比,@Value
注解更加简单直接,适用于简单的数值或字符串类型的注入。
在使用@Value
注解时,你可以通过${}
语法从属性文件中引用属性值,也可以直接指定一个常量值。
多种数据的读取
package com.bigdata1421.demo.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; // Rest模式 @RestController @RequestMapping("/yaml") public class YamlController { //读取yaml数据中的单一数据 //spring中为数据注入基本数据类型或者是字符串 @Value("${country}") private String country; //一级一级的往下 @Value("${user.name}") private String user_name; // 数组 @Value("${likes1[1]}") private String like; //对象数组 @Value("${user1[0].name}") private String gc_name; @GetMapping public String getById(){ System.out.println("springboot is running"); System.out.println("country ===>" + country); System.out.println("user1.name ===>" + user_name); System.out.println("like ===>" + like); System.out.println("gc_name ===>" + gc_name); return "springboot is running..."; } }
变量引用
使用${属性名}引用数据
baseDir: c:\windows tempDir: c:\windows\temp # 使用${属性名}引用数据 tempDir: ${baseDir}\temp
如果出现转义字符怎么修改
使用引号包裹的字符串其中的转义字符可以生效
读取全局属性
封装
一键搞定
用注解 @Autowired
@Autowired
是 Spring Framework 中的一个注解,用于自动装配依赖关系。在 Spring 应用程序中,通常会有很多不同的组件(如服务、存储库、控制器等),它们之间需要相互协作以完成业务逻辑。使用 @Autowired
注解,Spring 能够在运行时自动将依赖关系注入到组件中,而无需手动实例化这些依赖项。
当一个类标记了 @Autowired
注解时,Spring 容器会尝试在上下文中查找匹配该类型的 bean,并将其注入到目标类的相应字段、构造函数或者 setter 方法中。
在使用 @Autowired
注解时,有几种不同的方式可以指定注入的依赖:
- 字段注入:通过将
@Autowired
注解直接放在类的字段上来实现依赖注入。 - 构造函数注入:通过在类的构造函数上使用
@Autowired
注解来实现依赖注入。 - 方法注入:通过在类的方法上使用
@Autowired
注解来实现依赖注入。
package com.bigdata1421.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; // Rest模式 @RestController @RequestMapping("/yaml") public class YamlController { //封装全部数据 自动装配注解 //使用自动装配将所有数据封装到一个Environment对象里面去 @Autowired private Environment env; @GetMapping public String getById(){ System.out.println("springboot is running"); System.out.println("tempDir===>" + env.getProperty("tempDir")); return "springboot is running..."; } }
封装全部数据到Environment对象
读取引用类型属性
以后boot开发
我们会有一个类似于对象的数据格式
然后把数据封装进去
封装数据应该针对封装
我们在拿的时候就可以拿取对应的一组数据即可
这是我们的痛点
springboot 主流的数据封装
# 创建类 用于封装下面的数据 # 由 spring 帮我们去加载数据到对象里面去 一定要告诉 spring 加载这组信息 # 使用的时候从 spring 中获取信息 datasource: driver: com.mysql.jbdc.Driver url: jdbc:mysql://localhost/springboot_db username: root password: root666
创建实体类封装数据
定义数据模型封装yml配置文件中的数据
我们加载的数据在配置文件中
配置文件是给spring用的
boot是为了加速spring开发的
所以我们要把对象交给spring管理控制
我们要定义为bean
注解@Component
指定加载的数据
注解 @ConfigurationPropertis
发起请求后 控制台输出信息
package com.bigdata1421.demo.datasource; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import lombok.ToString; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component//定义为一个bean 交给spring去管理控制 @ConfigurationProperties(prefix = "datasource")//加载配置中的属性 @Setter @Getter @ToString @EqualsAndHashCode public class MyDataSource { // 数据封装 private String driver; private String url; private String username; private String password; }
application.yml 配置文件
配置文件中定义的是数据模型
# 创建类 用于封装下面的数据 # 由 spring 帮我们去加载数据到对象里面去 一定要告诉 spring 加载这组信息 # 使用的时候从 spring 中获取信息 datasource: driver: com.mysql.jbdc.Driver url: jdbc:mysql://localhost/springboot_db username: root password: root666
以后定义数据就是一堆一堆的
这一堆信息加载给哪个对象
那一组信息加载给哪个对象
而我们springboot管控的所有对象
要求的配置都从这里配置分发到各个对象里面去
再读取对应的数值
这里的所有对象都是通过这种形式 被tomcat服务器读取到的
这样可以增加目录级数
小结
模型类封装了yaml文件里的一部分
通过一个@ConfigurationProperties实现
指定封装的哪一组数据
这个模型类要定义为Spring的bean
通过注释@Component实现
再用@Autowired实现依赖注入bean
注意点