SpringBoot读取配置文件的几种方式

摘自:https://www.pianshen.com/article/27551903537/

一、介绍

在Spring Boot项目中我们经常需要读取application.yml配置文件的自定义配置,今天就来罗列一下从yaml读取配置文件的一些常用手段和方法。

二、@Value

这种是比较简单的方式,直接使用@Value注解获取配置文件信息。
使用方式如下:
application.yml配置文件
在这里插入图片描述

直接使用@Value注解@Value(“${}”),默认读取application.yml中的配置信息。

在这里插入图片描述

在这里插入图片描述

三、@ConfigurationProperties

@ConfigurationProperties注解提供了我们将多个配置选项注入复杂对象的能力。它要求我们指定配置的共同前缀。

可以使用weChat接收we-chat的值,因为这种形式支持从驼峰camel-case到短横分隔命名kebab-case的自动转换。
比如:
默认读取application.yml中的配置信息。
实体类:
在这里插入图片描述
在这里插入图片描述

注意:使用这种方式,yml中的配置信息不能有大写,否则读取不到。

单独使用@ConfigurationProperties的话依然无法直接使用配置对象,因为它并没有被注册为Spring Bean。我们可以通过两种方式来使得它生效。

  1. 可以使用@Component@Configuration等注解注入Spring IoC使之生效。
  2. 还可以直接使用注解@EnableConfigurationProperties进行注册,这样就不需要显式声明配置类为Spring Bean了。
    另外还有一个注解可以直接扫描在Spring Boot 2.2.0.RELEASE中提供了一个扫描注解@ConfigurationPropertiesScan。它可以扫描特定包下所有的被@ConfigurationProperties标记的配置类,并将它们进行IoC注入。

注意:这非常适合自动注入和批量注入配置类的场景,但是有版本限制,必须在2.2.0及以上。

四、@PropertySource

使用“@Value”与“@ConfigurationProperties”可以从全局配置文件“application.properties”或者“application.yml”中取值,然后为需要的属性赋值。当应用比较大的时候,如果所有的内容都当在一个配置文件中,就会显得比较臃肿,同时也不太好理解和维护,此时可以将一个文件拆分为多个,使用 @PropertySource 注解加载指定的配置文件。
例如:
properties文件:

在这里插入图片描述

实体类:
在这里插入图片描述
在这里插入图片描述

注意:
需要有@SpringBootApplication主启动类、和@RunWith(SpringRunner.class)注解
总结:
使用@Value注解可以直接读取application.yml配置文件中的配置信息。
使用@ConfigurationProperties也可以读取application.yml文件中的配置信息。
使用@ConfigurationProperties@PropertySource可以读取指定properties配置文件中的配置信息。

原文地址:https://www.cnblogs.com/lyh233/p/14894014.html