如何从配置文件取值?

一切的配置都是为了取值,Spring Boot提供了几种取值的方式?

@ConfigurationProperties
这个注解用于从配置文件中取值,支持复杂的数据类型,但是不支持 SPEL 表达式。
该注解中有一个属性 prefix ,用于指定获配置的前缀,毕竟配置文件中的属性很多,也有很多重名的,
必须用一个前缀来区分下。

标注在实体类上
这种方式用于从实体类上取值,并且赋值到对应的属性。使用如下:

/**
* @Component :注入到IOC容器中
* @ConfigurationProperties:从配置文件中读取文件
*/
@Component
@ConfigurationProperties(prefix = "userinfo")
@Data
@ToString
public class UserInfo {
private String name;
private Integer age;
private Boolean active;
private Map<String,Object> map;
private Date createdDate;
private List<String> hobbies;
}

标注在配置类中的方法上
标注在配置类上的方法上,同样是从配置文件中取值赋值到返回值的属性中。使用如下:

/**
* @Bean : 将返回的结果注入到IOC容器中
* @ConfigurationProperties :从配置文件中取值
* @return
*/
@ConfigurationProperties(prefix = "userinfo")
@Bean
public UserInfo userInfo(){
return new UserInfo();
}

总结
@ConfigurationProperties 注解能够很轻松的从配置文件中取值,优点如下:

  1. 支持批量的注入属性,只需要指定一个前缀 prefix
  2. 支持复杂的数据类型,比如 List 、 Map
  3. 对属性名匹配的要求较低,比如 user-name , user_name , userName , USER_NAME 都可以取值
  4. 支持JAVA的JSR303数据校验
    注意: @ConfigurationProperties 这个注解仅仅是支持从Spring Boot的默认配置文件中取值,比如
    application.properties 、 application.yml 。
    @Value
    @Value 这个注解估计很熟悉了,Spring中从属性取值的注解,支持 SPEL 表达式,不支持复杂的数据类
    型,比如 List 。使用如下:
@Value("${userinfo.name}")
private String UserName;

SpringBoot工程中读取配置文件里面的属性。
读取配置文件中的属性,主要有六种方式,分别如下所示:
第一种方式:使用【@Value】注解,读取指定属性。
第二种方式:使用【@ConfigurationProperty】注解,全量读取属性。
第三种方式:使用【@PropertySource注解 + Environment对象】。
第四种方式:使用【@PropertySource注解 + @ConfigurationProperties注解】。
第五种方式:使用【@PropertySource注解 + @Value注解】。
第六种方式:使用【PropertiesLoaderUtils】工具类。
具体每一种方式怎么使用,可以参考这位博主的文章:
https://blog.csdn.net/qq_39826207/article/details/127318092