在项目中,我们要求更灵活的配置,更好的模块化组合,在SpringBoot中,为满足这些,我们会将大量的参数配置在application.properties,通过@ConfigurationProperties注解,我们可以方便的获取到这些参数值。

在application.properties中创建这些参数:

注解@ConfigurationProperties的使用方法_字段


我们可以使用@Value注解来访问这些属性,但是这种注入配置方式有时候显得很笨重,我们将使用更安全的@ConfigurationProperties来获取这些属性

注解@ConfigurationProperties的使用方法_参数配置_02


@ConfigurationProperties的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类,请注意以下几点:

1、前缀定义了哪些外部属性将绑定到类的字段上

2、根据Springboot宽松的绑定规则,类的属性名称必须与外部属性的名称匹配

3、我们可以简单的用一个值初始化一个字段来定义一个默认值

4、类本身是可以包私有的

5、类的字段必须有公共的setter方法

Spring的宽松绑定规则:

以下变体都将绑定到hostName属性上

注解@ConfigurationProperties的使用方法_默认值_03

激活@ConfigurationProperties

对于Springboot,创建上图中显示的MailModuleProperties 类型的bean,我们可以通过下面几种方式将其添加到应用上下文中:

1、我们可以通过添加@Component注解让Component Scan扫描到

注解@ConfigurationProperties的使用方法_默认值_04


复杂属性类型List 和 Set

注解@ConfigurationProperties的使用方法_字段_05


注解@ConfigurationProperties的使用方法_字段_06


注解@ConfigurationProperties的使用方法_默认值_07


使用 Spring Boot Configuration Processor 完成自动补全

注解@ConfigurationProperties的使用方法_参数配置_08


这样,当我们在 application.properties 和 application.yml 中写配置的时候会有自动提醒:

注解@ConfigurationProperties的使用方法_参数配置_09