在项目中,我们要求更灵活的配置,更好的模块化组合,在SpringBoot中,为满足这些,我们会将大量的参数配置在application.properties,通过@ConfigurationProperties注解,我们可以方便的获取到这些参数值。
在application.properties中创建这些参数:
我们可以使用@Value注解来访问这些属性,但是这种注入配置方式有时候显得很笨重,我们将使用更安全的@ConfigurationProperties来获取这些属性
@ConfigurationProperties的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类,请注意以下几点:
1、前缀定义了哪些外部属性将绑定到类的字段上
2、根据Springboot宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
3、我们可以简单的用一个值初始化一个字段来定义一个默认值
4、类本身是可以包私有的
5、类的字段必须有公共的setter方法
Spring的宽松绑定规则:
以下变体都将绑定到hostName属性上
激活@ConfigurationProperties
对于Springboot,创建上图中显示的MailModuleProperties 类型的bean,我们可以通过下面几种方式将其添加到应用上下文中:
1、我们可以通过添加@Component注解让Component Scan扫描到
复杂属性类型
List 和 Set
使用 Spring Boot Configuration Processor 完成自动补全
这样,当我们在 application.properties 和 application.yml 中写配置的时候会有自动提醒: