【SpringBoot】读取application.yml配置中的三种方式

SpringBoot 获取配置文件数据

@Value注解

applicaiton.yml

sys:
  name: book-value
  age: 12
  flag: true

BootValueApplicationTests.java


@RunWith(SpringRunner.class)
@SpringBootTest
public class BootValueApplicationTests {

    @Value("${sys.name}")
    private String sysName;

    @Value("${sys.age}")
    private Integer sysAge;
    
    @Value("${sys.flag}")
    private Boolean sysFlag;

    @Value("${sys.noValue:123}")
    private String sysNoValue;

    @Test
    public void contextLoads() {
        System.out.println(sysName);
        System.out.println(sysAge);
        System.out.println(sysFlag);
        System.out.println(sysNoValue);
    }
}

打印如下所示

book-value
12
true
123

注意的地方

当对应的值不存在时,系统会报错。我们可以给定一个默认值即可。

如下所示:

 @Value("${sys.noValue:123}")
 private String sysNoValue;

@Value("${sys.Value:}")
private String sysNoValue;

在这里,sys.noValue这个值是不存在的,我们可以给定一个默认值为123,当然,我们如果不指定默认值的,它的默认值为空字符串。

优缺点

  • 优点:单个使用方便,灵活性高

  • 缺点:获取配置文件信息多,需要些大量的@Value,不利于开发,增加开发者的工作量

Environment对象

首先我们需要引入 Environment.
如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest
public class BootValueApplicationTests {
    @Autowired
    private Environment environment;

    @Test
    public void getValueByEvi() {
        String name =environment.getProperty("sys.name");
        System.out.println(name);
    }
}

当获取的值不存在时

此时,不会报错,获取的值为空。

 String halo =environment.getProperty("sys.halo");
 System.out.println(halo); // null

@ConfigurationProperties

这种方式常用于 配置的数据较多,封装成一个实体类。

实体类

@Data
@Component
@ConfigurationProperties(prefix = "sys")
public class SysConfig {
    private String name;
    private Integer age;
    private Boolean flag;
}

测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class BootValueApplicationTests {
    @Resource
    private SysConfig sysConfig;

    @Test
    public void getValueByConfigurationProperties() {
        System.out.println(sysConfig.getName());
        System.out.println(sysConfig.getAge());
        System.out.println(sysConfig.getFlag());
    }
}

测试结果如上所示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Bootapplication.yml是一个配置文件,用于配置应用程序的各种属性和参数。它是一种基于YAML格式的文件,可以用于配置应用程序的数据库连接、端口号、日志级别、缓存配置等等。在Spring Bootapplication.yml文件通常位于src/main/resources目录下,可以通过读取文件来加载应用程序的配置信息。通过修改application.yml文件,可以轻松地修改应用程序的配置,从而实现应用程序的定制化和优化。 ### 回答2: Spring Boot 是一个快速开发框架,使用 Spring Boot 可以轻松地构建出一个高效的、基于 Spring 的应用程序。在使用 Spring Boot 进行开发时,它提供了许多默认配置,但是通过修改配置可以使应用程序更好地符合个人需求。而这些配置信息就存储在 application.yml 文件application.ymlSpring Boot 应用程序的全局配置文件,它加入的原因主要是考虑到这是一种比较方便的 YAML 格式的配置文件。该文件主要使用键值对的形式,提供了对应的属性、值和默认值。例如,可以在文件配置数据库连接、服务端口、日志级别以及其他相关的参数。 在 application.yml 可以定义很多属性,主要包括以下几类: 1. 服务相关属性:可以通过指定端口号、IP 地址、Context 名字等相关配置。 2. 数据源相关属性:可以通过 JDBC Url、用户名、密码等属性定义数据库连接。 3. 日志相关属性:可以配置 logback,按需设置日志级别、打印位置等相关属性。 4. 服务发现相关属性:可以配置服务发现的一些信息,加入 Eureka Server 的地址等。 5. RabbitMQ、Kafka 相关属性:可以配置消息间件的地址,例如 RabbitMQ 的 Queue 等属性。 总之,application.ymlSpring Boot 项目使用非常广泛,是非常方便的配置文件。开发者可以通过修改这个文件配置应用程序的各种属性,以便让应用程序更好地满足需求。同时,透彻了解和使用 application.yml 也有利于我们更好地理解 Spring Boot 框架的设计理念。 ### 回答3: Spring Boot是一个基于Spring框架的快速开发工具,它封装了很多常用的配置和功能。在Spring Boot,我们可以使用application.yml文件配置应用程序的属性。 application.yml文件是一个结构化的配置文件,采用YAML格式。它允许我们通过指定属性键和值来配置应用程序,这样我们就可以方便地配置我们的应用程序和相关组件。相比于传统的XML配置文件,YAML格式更加易读、易编写。 在application.yml文件,我们可以定义一些核心的应用程序属性,例如服务器端口、数据库连接、日志级别等。它还可以定义自定义属性,例如项目的名称、描述等。此外,我们还可以定义扩展属性,例如Redis、MongoDB、Kafka、RabbitMQ等应用程序所需的属性。 Spring Boot采用优先级顺序来加载应用程序属性。如果在application.yml文件定义了属性,它们将被首先加载。然后,Spring Boot会加载application.properties文件的属性。最后,任何在Java系统属性或OS环境变量定义的属性将被加载。这意味着我们可以在运行时动态地覆盖属性。 总而言之,application.yml文件Spring Boot应用程序的核心配置文件之一。它允许我们通过YAML格式的方式定义应用程序的属性,从而方便地配置应用程序和组件。Spring Boot采用优先级顺序来加载属性,并支持覆盖已定义的属性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值