Spring Boot允许您将配置外部化,这样就可以在不同的环境中使用相同的应用程序代码。您可以使用属性文件、YAML文件、环境变量和命令行参数来配置应用。属性值可以使用@Value注释直接注入到bean中,可以通过Spring的环境访问,也可以通过注释@ConfigurationProperties绑定到结构化对象。
Type-safe configuration properties(类型安全的配置属性)
使用@Value("${property.name}")注释注入配置属性有时会南预处理,特别是在处理多个属性或数据本质上是有层次结构的情况下。Spring Boot提供了处理属性的另一种方法,允许强类型bean管理和验证应用程序的配置。
Relaxed binding
Spring Boot自动使用宽松的规则将环境相关属性绑定到@ConfigurationProperties bean。也就是说,环境属性名和bean属性名之间不需要完全匹配。假设您有一个名为allowCredentials的bean属性,您可以在属性中使用以下配置。每一种配置都会配对成功。
allowCredentials: 使用标准的大小写语法。
allow-credentials:使用虚线表示法。
allow_credentials:使用下划线表示法。
ALLOW_CREDENTIALS: 使用大写格式。
我们来看一个关于ConfigurationProperties的实例。
Spring Boot @ConfigurationProperties允许开发者轻松地将整个属性文件映射到一个对象中。
在原本的spring框架中,我们使用@Value标注来逐个注入属性值,如下图所示:
而通过使用@ConfigurationProperties,这将变得容易得多。这是一个简单的属性文件"application.properties":
@ConfigurationProperties注释有助于加载一系列相关属性,比如在这个特定的例子中,由前缀"cmdb"命名。
Spring boot采用的方法是定义一个bean,它可以用这种方式保存所有相关属性:
在运行时,所有属性都将被注入到相关的bean属性中。
现在让我们在应用程序加载后打印属性:
然后我们就可以在控制台看到打印出来的在运行时加载的属性了。有兴趣的小伙伴可以尝试在外部环境更改后多运行几次,看看效果如何
感兴趣的各位请关注,关注的人越多,我就能写得越好。
閱讀更多 覺猿 的文章