您的位置 首页 > 腾讯云社区

SpringBoot2.x基础篇:使用YAML代替Properties的对应配置---恒宇少年

普通配置

普通的方式比较简单直接,不存在数组、集合、子类等相关配置,我们通过Properties方式编写了如下的配置内容:

system.config.max-value=100 system.config.min-value=10 system.config.location=classpath:/configs

那这种方式对应的YAML配置是什么样子的呢?

如下所示:

system: config: min-value: 10 max-value: 100 location: classpath:/configs

这两种方式对比之下,YAML层次感鲜明,更直观的查看配置信息,而Properties这种方式配置前缀相对来说是冗余的,如果配置前缀过长,每一行的配置内容则会更长。

List配置

如果你需要添加List/Set/Array类型的配置信息,使用Properties方式编写如下所示:

system.config.ports[0]=8080 system.config.ports[1]=8081 system.config.ports[2]=8082

注意事项:配置的索引从0开始。

对应上面配置的YAML实现如下所示:

system: config: ports: - 8080 - 8081 - 8082

无论是Properties还是YAML格式,这种List的配置内容都可以通过如下的方式获取:

@Configuration @ConfigurationProperties(prefix = "system.config") @Data public class LoadListConfig { private List<String> ports; }List内实体配置

如果你的List内不是基本数据类型,而是一个实体类,使用Properties的配置方式如下所示:

system.users[0].username=admin system.users[0].email=yuqiyu@vip.qq.com system.users[1].username=hengboy system.users[1].email=jnyuqy@gmail.com

其实跟上面的List配置差不多,不过如果你需要配置每一个索引内字段的值,就要一一指定配置值。

对应上面的YAML实现如下所示:

system: users: - username: admin email: yuqiyu@vip.qq.com - username: hengboy email: jnyuqy@gmail.com

每一个 - 其实代表集合内的一个元素。

获取List实体配置时我们可以通过如下的方式:

@Data @Configuration @ConfigurationProperties(prefix = "system") public class LoadSystemUserConfig { private List<User> users; @Getter @Setter public static class User { private String username; private String email; } }YAML缺点

一种方案的诞生是为了解决相应的问题,虽然说存在既有道理,但是每一种方案也不是完美的都有自身的缺点。

下面简单说说YAML的缺点:

配置时缩进要特别注意,如果存在空格缩进对应不齐就会出现问题在SpringBoot内无法通过@PropertySource注解加载YAML文件。 ---来自腾讯云社区的---恒宇少年

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: