目录

1、SpringBoot加载配置文件的值

1.1、application.yml

1.2、取配置文件值的类

2、读取配置文件的值赋给JavaBean属性

2.1、赋值的JavaBean

2.2、application.yml

3、加载外部配置文件读取值

3.1、新建自定义的配置文件test.properties(不能为YMAL文件)

3.2、读取外部配置文件的Java类-PropertySourceProperty.java

3.3、配置文件没有给变量赋值的在Value注解中定义默认值

4、多环境配置文件以及其加载使用

4.1、建立多环境配置文件,命名为application-{dev}.yml

 4.2、在主配置文件中指定加载的文件

4.3、激活使用的配置文件会打印日志

4.4、可以通过命令行参数指定加载的配置文件 

5、配置文件加载顺序

5.1、项目内部配置文件

5.2、外部配置加载顺序


1、SpringBoot加载配置文件的值

1.1、application.yml

test:
  check:
    code: 123456

1.2、取配置文件值的类

1)在类上添加@Component组件注解

2)在属性上添加@Value注解用于读取配置文件的值并赋值给对应的属性

package com.example.mp.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @description 读取配置文件的值并赋值给对应的属性
 * @date 2021/07/28
 * @author cm
 */
@Component
@Data
public class ValueProperty {

    @Value("${test.check.code}")
    private String check_code;

}

2、读取配置文件的值赋给JavaBean属性

2.1、赋值的JavaBean

在类上添加组件注解@Component以及配置属性注解@ConfigurationProperties(prefix = "test")用于读取配置文件,并指定前缀。

package com.example.mp.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @description 读取配置文件的值赋给JavaBean属性
 * @date 2021/07/28
 * @author cm
 */
@Data
@Component
@ConfigurationProperties(prefix = "test")
public class BeanProperty {

    private String tel;

    private boolean exist;

}

2.2、application.yml

test:
  tel: 15812345678
  exist: true

3、加载外部配置文件读取值

3.1、新建自定义的配置文件test.properties(不能为YMAL文件)

test.property=6666666

3.2、读取外部配置文件的Java类-PropertySourceProperty.java

为该类添加@Component组件注解,以及加载读取外部配置文件的@PropertySource("classpath:test.properties")注解,并为之指定类路径的配置文件名称;

并在对应的属性上面添加@Value注解

package com.example.mp.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * @description 加载外部配置文件读取值
 * @date 2021/07/28
 * @author cm
 */
@Data
@Component
@PropertySource("classpath:test.properties")
public class PropertySourceProperty {

    @Value("${test.property}")
    private String property;
}

3.3、配置文件没有给变量赋值的在Value注解中定义默认值

给配置文件的KEY定义默认值的在KEY后面加英文冒号和默认值

@Value("${test.property:2222222}")
private String property;

4、多环境配置文件以及其加载使用

4.1、建立多环境配置文件,命名为application-{dev}.yml

 4.2、在主配置文件中指定加载的文件

spring:
  profiles:
    active: dev

4.3、激活使用的配置文件会打印日志

4.4、可以通过命令行参数指定加载的配置文件 

java -jar demo-0.0.1.jar --spring.profiles.active=dev

5、配置文件加载顺序

5.1、项目内部配置文件

spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

  –file:./config/
  –file:./
  –classpath:/config/
  –classpath:/

以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。

SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。

5.2、外部配置加载顺序

SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

  1. 命令行参数
    1. 所有的配置都可以在命令行上进行指定;
    2. 多个配置用空格分开; –配置项=值     java -jar demo-0.0.1.jar --server.port=8087 --server.context-path=/abc
  2. 当前环境变量或者系统变量中的“SPRING_APPLICATION_JSON”属性
  3. ServletConfig 初始化参数
  4. ServletContext 初始化参数
  5. “java:comp/env”中的JNDI属性
  6. Java系统变量 “System.getProperties()”
  7. 操作系统环境变量
  8. Jar包外指定的 application-{profile}.properties
  9. Jar包内指定的 application-{profile}.properties
  10. Jar包外的 application.properties
  11. Jar包内的application.properties
  12. @PropertySource引入的配置
  13. 默认配置属性 “SpringApplication.setDefaultProperties”

参考:https://docs.spring.io/spring-boot/docs/2.3.4.RELEASE/reference/htmlsingle/#boot-features-external-config

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐