Spring Boot配置文件

1、配置文件
  • Spring Boot使用配置文件是固定的
    application.properties
    application.yaml
    YAML:(YAML Ain’t Markup Language )
    YAML: A Markup Language 是一个标记语言
    YAML: isn’t Markup Language 不是一个标记语言
    YAML:以数据为中心,比如json,xml等更适合做配置文件
    YAML配置例子
server:
  port:9998
2 、YAML基本语法
  • k(空格)v:表示一对键值对(空格必须有) 以空格的缩进来控制层级关系,只要左对齐的一个数列,就是同一层级。
  • 属性和值大小写敏感
server:
  port:9998
  path:/hello
  • 值的写法
  1. 字面量:普通的值(数字,字符串,布尔)
    k:v :字面直接来写
    字符串默认不需要加上单引号和双引号;
    双引号:不会转移字符里面的特殊字符,特殊字符会作为本来的意思。
    name:“张三/nl isi” ; 输出:张三 换行 lisi
    单引号:会转移字符,特殊字符只是普通字符串数据

  2. 对象、Map(属性和值)(键值对)
    对象还是k:v的方式:在下一行来写对象的属性和值的关系;注意缩进。

         frinds:
              lastname:zhangsan
              age:19
           //行内写法
           frinds:{lastname:zhangsan,age:19}
  1. 数组(List,Set)
    用-值表示数组的一个元素
pets:
   - cat
   - dog
   - pig

行类写法

pets:[cat,dog,pig]
3、获取配置文件的值

Yaml里面

server:
    port:9998
user:
  name: denghao
  age: 19
  map: { k1: v1,k2: v3}
  list:
    - lisi
    - zhaoliu
  dog:
    name1: xiaohau
    age1: 2

javaBean中

/*
* 将配置中的每个属性的值,映射到这个组件中
* @ConfigurationProperties告诉本类中SpringBoot的所有属性和配置文件相关的配置进行绑定
*   prefix=“user”  配置文件中的哪个下面的所有属性进行一一映射
* 这个组件只有加入到容器中,才能使用他的功能
* 使用@omponent让他加入容器中
* */
@Component
@ConfigurationProperties(prefix = "user")
public class User {
  private   String name;
  private  int age;
    private Map<String,Object> map;
    private List<Object> list;
    //  对象
    private Dog dog;

导入配置文件处理器,以后编写编写配置文件就有提示

<!--        导入配置文件处理器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.1.9.RELEASE</version>
            <optional>true</optional>
        </dependency>

@ConfigurationProperties和@Value的区别

项目@ConfigurationProperties@Value
功能批量注入一个个指定
松散绑定(松散语法)支持不支持
SpeEL不支持支持
JSR303数据校验支持不支持

@Validated数据校验,必须是@ConfigurationProperties才可以

@Component
@ConfigurationProperties(prefix = "user")
@Validated//数据校验
public class User {
    @Email
    private   String name;

    private  int age;
    private Map<String,Object> map;
    private List<Object> list;
    //  对象
    private Dog dog;

如果说只是在业务逻辑中获取一个某项值,使用@Value
如果说专门编写一个javabean的映射,就用@ConfigurationProperties

4、@PropertySource&@ImportSource

@PropertySource加载指定的配置文件

/*
* 将配置中的每个属性的值,映射到这个组件中
* @ConfigurationProperties告诉本类中SpringBoot的所有属性和配置文件相关的配置进行绑定
*   prefix=“user”  配置文件中的哪个下面的所有属性进行一一映射
* 这个组件只有加入到容器中,才能使用他的功能
* 使用@omponent让他加入容器中
* */
@Component
@ConfigurationProperties(prefix = "user")
@PropertySource(value = {"classpath.user.properties"})
@Validated//数据校验
public class User {
    private   String names;

    private  int age;
    private Map<String,Object> map;
    private List<Object> list;
    //  对象
    private Dog dog;

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


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

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

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

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

    public Dog getDog() {
        return dog;
    }

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

    public User(String names, int age) {
       this.names=names;
       this.age=age;
    }

@ImportSource导入spring的配置文件,让配置文件的内容生效

5、Profile
1、我们在主配置文件编写时,文件名可以是 application-{profile}.properties/yaml

默认使用application.properties 的配置

2、激活指定的Profile:

1、可以在配置文件中指定spring.profiles.active=dev
2、命令行:–spring.profiles.active=dev 在这里插入图片描述
3、虚拟机参数:Dspring.profiles.active=dev

3、yml多文档块方式
server:
port: 9997
spring:
profiles:
  active: dev
---
server:
port: 7776
spring:
profiles: dev
6、配置文件的加载位置

在这里插入图片描述

7、配置文件的加载位置

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值