Spring Boot 配置文件

目录

一.application.yml(application.yaml)

1.结构

2.对象

3.数组

二.application.properties

1.结构

2.对象

3.数组

三.配置类

1.使用yml文件配置实体类

1.1 yml文件:

1.2 实体类:

1.3 yml文件的松散绑定(松散语法)

2.使用properties文件配置实体类

2.1 properties文件:

2.2 实体类:

四.SpringBoot的多环境配置

1.配置文件的优先级

2.多环境配置

1.作用:

2.配置文件命名:

2.1 yml文件:

2.2 properties文件:

3.激活方式:

3.1 在application.yml文件中:

3.2 在application.properties文件中

4.获取方式:

五.SpringBoot的 自动配置 原理

1.规律

2.原理


springboot的自定义的配置文件有两种,application.yml和application.properties,且命名必须是application。SpringBoot的特点是:自动装配

一.application.yml(application.yaml)

1.结构

​key: value
 
//注:key:(空格)value,没有空格则报错。

2.对象

#对象普通写法
student:
    name: zhangsan
    age: 3
#注:层级关系,并排一列为一级,yaml语法对空格要求十分严格
        
#对象行内写法
student:{name: zhangsan,age: 3}

3.数组

#数组普通写法
class:
    - zhangsan
    - lisi
    - wangwu
    
#数组行内写法
class:[zhangsan,lisi,wangwu]

二.application.properties

1.结构

key=value

2.对象

student.name=zhangsan
student.age=zhangsan

3.数组

class=[zhangsan,lisi,wangwu]

三.配置类

1.使用yml文件配置实体类

1.1 yml文件:

person:
    name: zhangsan${random.uuid}
    age: ${random.int}
    map: {key1: value1,k2: v2,...}
    strList:
        -pen
        -ruler

1.2 实体类:

@ConfigurationProperties(prefix = "person")
@Component  //注册bean
public class person{
    private String = name;
    private int = age;
    private Map<String,String> map;
    private List<String> strList;
}
​
/*
@ConfigurationProperties的作用:
1.置文件中配置的每一个属性的值,映射到这个主键中;
2.pringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
3. prefix = "person" 的作用是:将配置文件中的person下面的所有属性一一对应,即将yml文件中的配置映射到Person类中;
4.只有这个组件(@Component)是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
*/

1.3 yml文件的松散绑定(松散语法)

    yml文件支持yml文件映射到实体类时,yml文件和实体类命名规则不一致,也能正常映射。
即:在命名规则情况下:yml:/myName ->class:/myName 能映射成功;而在命名规则不相同的情况下:yml:/my-name ->class:/myName 也能映射成功。

2.使用properties文件配置实体类

2.1 properties文件:

name=zhangsan
age=7
map={key1: value1,k2: v2,...}
strList=["pen","ruler"]

2.2 实体类:

@ApropertySource(value= "classpath:application.properties")//加载指定的配置类
@Component  //注册bean
public class person{
    //SPEL 表达式取出配置文件的值
    @Value("${name}")
    private String = name;
    @Value("${age}")
    private int = age;
    @Value("${map}")
    private Map<String,String> map;
    @Value("${strList}")
    private List<String> strList;
}

四.SpringBoot的多环境配置

1.配置文件的优先级

1.file:./config/
2.file:./
3.classpath:/config/
4.classpath:/
​
注:file为项目文件,classpath:类文件,一般在java项目里的main文件下的java或resoures。配置文件一般放在resources目录下。

2.多环境配置

1.作用:

        SpringBoot的多环境配置,可以选择激活需要的配置文件。

3.配置文件命名:

3.1 yml文件:

默认配置文件:application.yml
开发环境配置文件:application-dev.yml
测试环境配置文件:application-test.yml

3.2 properties文件:

默认配置文件:application.properties
开发环境配置文件:application-dev.properties
测试环境配置文件:application-test.properties

4.激活方式:

4.1 在application.yml文件中:

4.1.1 写了多个yml文件的情况下:

#测试环境配置,同一目录下有application-test.yml文件
spring
    prifiles
        active: test
---
#开发环境配置,同一目录下有application-dev.yml文件
spring
    prifiles
        active: dev
            
#"---"起分隔作用,形成两个互不影响的环境配置

4.1.2 同一yml文件:

spring
    prifiles
        active: test
---
server
    port:8081
spring
    prifiles: dev
---
server
    port:8082
spring
    prifiles: test
        
#"---"起分隔作用,形成三个互不影响可以调用的环境配置,相当于三个yml文件

4.2 在application.properties文件中

#开发环境配置,同一目录下有application-dev.properties文件
spring.prifiles.active = dev

5.获取方式:

//在实现类中注入import org.springframework.core.env.Environment 类
@Autowired
private Environment environment;
​
//在方法中使用import org.springframework.core.env.Profiles 类调用静态方法of
//值为环境,可以传入多种
Profiles profiles = Profiles.of("dev","test");
//接受环境进行判断,符合返回true,不符返回false
boolean flag = environment.acceptsProfiles(profiles);

五.SpringBoot的 自动配置 原理

1.规律

        在SpringBoot的配置文件中能配置的东西,都存在一种规律。

        1.在SpringBoot项目中,SpringBoot会默认通过xxxAutoConfiguration类帮我们自动装配了很多配置。

        2.每一个这样的xxxAutoConfiguration类都是容器中的一个组件,最后加入到容器中,用他们来做自动配置。

        3.每一个自动配置类可以进行自动配置功能,但这些配置类需要我们去满足它的激活条件才能生效使用。简单来说就是:根据当前不同的条件判断,决定这个配置类是否生效(可以在配置文件中通过debug: true,查看哪些配置生效、不生效和没有条件)。当这个配置类生效时,这个配置类就会给容器中添加各种组件。这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性有事和配置文件绑定的。

        4.xxxAutoConfiguration类在自动装配时,通过xxxProperrties类去获取默认值,xxxProperties类上有@ConfigurationProperties(prefix = "yyy")注解。这使我们可以在配置类里通过yyy的值去配置我们想要的东西。

        5.所有在配置文件中能配置的属性都是在xxxProperties类中封装的,配置文件能配置的东西是对应这个配置类中的某个功能。

2.原理

        1.SpringBoot启动会加载大量的自动配置类;

        2.配置文件能写的属性在SpringBoot默认写好的自动配置类中;

        3.查看该自动配置类中到底配置了哪些组件;(只要需要的用到的组件包含在其中,就不需要去手动配置)

        4.给容器中自动配置类添加组件的时候,会从xxxProperties类中获取某些属性。我们只需要在配置文件中指定这些属性即可。

xxxAutoConfiguration:自动配置类,作用是给容器中添加组件;

xxxProperties:封装配置文件中相关的属性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值