SpringBoot在yaml中配置属性

  • 编写实体类
package com.llf.Pojo;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private  String name;
    private  Integer age;
    private Map<String,Object> map;
    private ArrayList<Object> list;
    @Autowired
    private  Dog dog;

    public Person() {
    }

    public Person(String name, Integer age, Map<String, Object> map, ArrayList<Object> list, Dog dog) {
        this.name = name;
        this.age = age;
        this.map = map;
        this.list = list;
        this.dog = dog;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Map<String, Object> getMap() {
        return map;
    }

    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

    public ArrayList<Object> getList() {
        return list;
    }

    public void setList(ArrayList<Object> list) {
        this.list = list;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", map=" + map +
                ", list=" + list +
                ", dog=" + dog +
                '}';
    }
}

  • 编写yaml文件
person:
  name: 狂神
  age: 3
  map: {k1: v1,k2: v2}
  list:
    - code
    - girl
    - games
  dog:
    name: kuangshen
    age: 1

yaml语法:

  • ​ yaml使用KV键值对的形式赋值 中间用==:==隔开,属性和值之间用空格 即 属性:空格+属性值

  • ​ yaml语法有严格的层次之分,一级一级嵌套,name,age,map,list是person的属性 dog下面的name age则是dog的属性

在这里插入图片描述

层次分明

  • 最后在实体类的类上加一个注解
@ConfigurationProperties(prefix = "xxxx")  此处是person

xxxx代表的就是yaml配置文件中你的对象的名字

这个注解的作用就是将yaml中的对象的值与实体类的值绑定

相较于之前的@Value 这个注解 我们现在只需要写一个注解就可以了

  • 自定义语法

可以在yaml配置文件中 在属性值出使用el占位符表达式生成随机值

]

person:
  name: ${random.uuid}
  age: ${random.int(50)}
  map: {k1: v1,k2: v2}
  list:
    - code
    - girl
    - games

在这里插入图片描述
在这里插入图片描述

JSR303校验

1.空值检查

注解功能
@Null校验对象是否为null
@NotNull校验对象是否不为null,无法查检长度为0的字符串
@NotEmpty不能为null或空
@NotBlank校验约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格

2.Boolean检查

注解功能
@AssertTrue校验Boolean 对象是否为 true
@AssertFalse校验Boolean 对象是否为 flase

3.长度检查

注解 功能
@Length (String)长度在范围内
@Size (Array,Colleation,Map,String)长度在范围内

4.日期检查

注解功能
@Future日期必须在当前日期的未来
@Past日期必须在当前日期的过去

5.数值检查

注解 功能

注解功能
@Range(min=,max=)值在范围内
@Max验证 Number 和 String 对象是否小等于指定的值
@Min验证 Number 和 String 对象是否大等于指定的值
@DecimalMax被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=)验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。

6.其他检查

注解 功能

注解功能
@URL必须是一个URL
@Pattern正则表达式
@Email必须是一个Email,或空

使用方法:在需要校验的类上添加@Validated注解 在需要校验的属性上添加相应的注解名

新版本需要添加依赖

   <!--JRC303校验-->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.17.Final</version>
        </dependency>

实体类

@Component
@Validated
@ConfigurationProperties(prefix = "dog")
public class Dog {
    @Value("狂神")
    private String name;
    @Value("3")
    private String age;
    @Email()
    private String email;

yaml配置文件

dog:
  email: 123

test测试

  @Autowired
    private Dog dog;
    @Test
    void contextLoads() {
       System.out.println(dog.toString());
    }

结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zq3Zm8Zo-1626516993248)(C:\Users\machenike\AppData\Roaming\Typora\typora-user-images\image-20210717161905341.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cCFjNpG6-1626516993249)(C:\Users\machenike\AppData\Roaming\Typora\typora-user-images\image-20210717162020028.png)]

测试发现 这个功能十分鸡肋,他只会判定你的字符串中有没有@这个符号 而不会检验你的email是否有效

多运行环境切换

使用properties版本

创建不同的properties文件 文件名字用application- 加文件名.properties

在这里插入图片描述

在任意一个properties文件中输入

spring.profiles.active=xxx   此处的xxx就是文件-后面的文件名  就拿dev举例  
那么我们现在的运行环境就是dev配置的环境

在这里插入图片描述

使用yaml版本

使用properties我们需要创建多个文件夹 但是使用yaml的格式 我们可以只使用一个yaml文件即可

spring:  
	profiles:    
		active: test
---
server:
  port: 8081
spring:
  profiles: dev
# 这里我们使用三个- 来表示文件的结束 即---下面的是一个新的文件 我们显示的定义了文件名 profiles为dev---server:  port: 8082spring:  profiles: test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BqIxt9XM-1626516993252)(C:\Users\machenike\AppData\Roaming\Typora\typora-user-images\image-20210717170219960.png)]

配置文件优先级问题

在整个程序中配置文件可以在4个地方创建 他们分别是

  • 主程序目录下
  • 主程序的config目录下
  • 类路径下
  • 类路径的config目录下

在这里插入图片描述

它的优先级顺序是 根目录的config–>根目录—>类路径下的config—>类路径

如果在一个地方 那么按照文件的上下顺序 越靠上优先级顺序越高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Boot的application.yaml文件通常包含应用程序的配置信息,例如数据库连接信息、端口号、日志级别等。以下是一个示例的application.yaml文件,其包含了一些常见的配置项: ``` server: port: 8080 servlet: context-path: /api spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: mypassword driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true logging: level: org: springframework: web: DEBUG ``` 在这个示例配置了服务器端口号为8080,Servlet上下文路径为/api。数据源配置指定了MySQL数据库连接的URL、用户名、密码和驱动程序类名。JPA配置指定了Hibernate的DDL自动更新策略和是否显示SQL语句。日志级别设置为DEBUG,以便调试应用程序。 请注意,YAML文件使用缩进来表示嵌套关系,例如server和servlet都是属于同一个父级节点的。另外,冒号和空格是YAML文件的重要标记,它们用于分隔键值对。 ### 回答2: 在Spring BootYAML文件是一种常见的配置文件格式,用于配置应用程序的各种属性和特性。YAML文件包含的内容可以分为以下几个方面: 1. 服务器端口配置:可以通过YAML文件配置应用程序监听的服务器端口号。例如,可以通过`server.port`属性设置应用程序监听的端口号。 2. 数据库配置YAML文件可以配置应用程序连接的数据库信息,如数据库的URL、用户名、密码等。通过配置`spring.datasource`属性,可以指定应用程序所使用的数据库。 3. 日志配置YAML文件可以配置应用程序的日志输出方式和级别。例如,可以通过配置`logging.level`属性来设置日志的输出级别,以及通过`logging.file`属性来指定日志的输出文件。 4. 应用程序属性配置YAML文件可以配置应用程序的各种属性和特性。例如,可以通过配置`spring.application.name`属性来设置应用程序的名称,以及通过`spring.profiles.active`属性来指定应用程序的运行环境。 5. 缓存配置YAML文件可以配置应用程序的缓存配置信息。例如,可以通过配置`spring.cache`属性来指定应用程序所使用的缓存类型和参数。 6. 安全配置YAML文件可以配置应用程序的安全认证信息。例如,可以通过配置`spring.security`属性来指定应用程序使用的安全认证方式和权限配置。 总之,YAML文件是Spring Boot常用的配置文件格式,可以通过它来配置应用程序的各种属性和特性,包括服务器端口、数据库连接、日志输出、应用程序属性、缓存配置和安全认证等。通过适当配置YAML文件,可以方便地对应用程序进行配置和管理。 ### 回答3: Spring Bootyaml文件是用来配置应用程序的。它包含了许多重要的参数和属性,用来定义应用程序的行为和特性。下面是yaml文件可能包含的一些内容: 1. 服务器端口:可以在yaml文件指定应用程序要监听的端口号。默认情况下,Spring Boot将使用8080端口。 2. 数据库配置:可以通过yaml文件来定义应用程序所使用的数据库连接信息,包括数据库的URL、用户名、密码等。可以根据需要配置多个数据库。 3. 日志配置:可以通过yaml文件配置应用程序的日志输出方式和级别。可以指定日志的文件路径、输出格式和日志的级别等信息。 4. 线程池配置:可以通过yaml文件配置应用程序的线程池使用方式和参数,包括线程池的大小、最大等待时间等。 5. 缓存配置:可以通过yaml文件配置应用程序的缓存使用方式和参数,包括缓存的类型、最大缓存大小等。 6. Spring框架特性配置:可以通过yaml文件配置Spring框架的各种特性,例如自动扫描包、自动注入Bean等。 7. 第三方服务配置:可以通过yaml文件配置应用程序所使用的第三方服务,例如消息队列、文件存储、邮件发送等。 总之,yaml文件是用来配置Spring Boot应用程序的重要文件,它包含了许多关键的配置参数,可以根据应用程序的需求进行修改和调整。使用yaml文件可以方便地管理和配置应用程序的各种功能和特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值