同样的应用代码,发布到不同的环境,这就是Springboot的解决方案

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标注来逐个注入属性值,如下图所示:

同样的应用代码,发布到不同的环境,这就是Springboot的解决方案

而通过使用@ConfigurationProperties,这将变得容易得多。这是一个简单的属性文件"application.properties":

同样的应用代码,发布到不同的环境,这就是Springboot的解决方案

@ConfigurationProperties注释有助于加载一系列相关属性,比如在这个特定的例子中,由前缀"cmdb"命名。

Spring boot采用的方法是定义一个bean,它可以用这种方式保存所有相关属性:

同样的应用代码,发布到不同的环境,这就是Springboot的解决方案

在运行时,所有属性都将被注入到相关的bean属性中。

现在让我们在应用程序加载后打印属性:

同样的应用代码,发布到不同的环境,这就是Springboot的解决方案

然后我们就可以在控制台看到打印出来的在运行时加载的属性了。有兴趣的小伙伴可以尝试在外部环境更改后多运行几次,看看效果如何

同样的应用代码,发布到不同的环境,这就是Springboot的解决方案


感兴趣的各位请关注,关注的人越多,我就能写得越好。


分享到:


相關文章: