@ConfigurationProperties注解的使用

432 阅读2分钟

一.@ConfigurationProperties

@ConfigurationProperties注解,此注解的作用是用来为bean绑定属性的。开发者可以在yml配置文件中以对象的格式添加若干属性

然后再开发一个用来封装数据的实体类,注意要提供属性对应的setter方法

使用@ConfigurationProperties注解就可以将配置中的属性值关联到开发的模型类上

@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
}

总结

  1. 使用@ConfigurationProperties可以为使用@Bean声明的第三方bean绑定属性
  2. 当使用@EnableConfigurationProperties声明进行属性绑定的bean后,无需使用@Component注解再次进行bean声明

一. 封装全部数据到Environment对象

  1. 使用Environment对象封装全部配置信息

封装全部数据到Environment对象

  1. 自定义对象封装指定数据

  1. 小结
  • 使用@ConfigurationProperties注解绑定配置信息到封装类中
  • 封装类需要定义为Spring管理的bean,否则无法进行属性注入

三. @Value配置和区别

因为application.properties是springboot项目默认的配置文件,所以springboot程序在启动

时会默认读取application.properties配置文件,而我们可以使用一个现成的注解:@Value,获

取配置文件中的数据。

@Value 注解通常用于外部配置的属性注入,具体用法为: @Value("${配置文件中的key}")

@Component
public class AliOSSUtils {
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
 
 //省略其他代码...
 }

Spring提供的简化方式套路:

  1. 需要创建一个实现类,且实体类中的属性名和配置文件当中key的名字必须要一致

  2. 需要将实体类交给Spring的IOC容器管理,成为IOC容器当中的bean对象

  3. 在实体类上添加 @ConfigurationProperties 注解,并通过perfect属性来指定配置参数项的

    前缀

相同点:都是用来注入外部配置的属性的。

不同点:

@Value注解只能一个一个的进行外部属性的注入。

@ConfigurationProperties可以批量的将外部的属性配置注入到bean对象的属性中。