目录
一 . 什么是@ConfigurationProperties注解
二 . @ConfigurationProperties的参数解释
一 . 什么是@ConfigurationProperties注解
在 SpringBoot 中,当想需要获取到配置文件数据时,除了可以用 Spring 自带的 @Value 注解外,SpringBoot 还提供了一种更加方便的方式:@ConfigurationProperties。只要在 Bean 上添加上了这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到 Bean 中。
在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值
在日常开发实践中,经常需要通过@Value注解读取、加载配置文件中的自定义配置项。当存在大量自定义配置项时,就需要很多个@Value注解一一绑定,显然不够优雅。所以我们采用另一种方式,即通过@ConfigurationProperties注解实现。
二 . @ConfigurationProperties的参数解释
参数一:value:
前缀,用于识别properties/yml文件里需要映射的属性的统一前缀
参数二:prefix:
前缀,用于识别properties/yml文件里需要映射的属性的统一前缀
参数三:ignoreInvalidFields:false
是否忽略非法值,比如将一个字符串 “foo” 赋值给 bool 值,不忽略的话会报启动异常。
参数四:ignoreUnknownFields:true
对于多余的配置是否会报异常。例如:当配置文件中有一个或多个属性未绑定到实体类时或属性名字出错或已被删除了,这时候对于实体类,properties里的属性是未知的。这种情况我们希望程序启动失败,这时候就将此参数设置为false即可
三 举例说明
比如在application.properties文件中有如下配置文件
· config.username=jay.zhou
· config.password=3333
那么按照如下注解配置,SpringBoot项目中使用@ConfigurationProperties的Bean,它的username与password就会被自动注入值了。就像下面展示的那样
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "config")
public class TestBean{
private String username;
private String password;
}