外部化配置

轻松的绑定

有关宽松绑定的规则已经收紧。我们假设一个现有的acme.my-project.my-name属性:

  • 所有前缀必须是 kebab格式(小写,连字符分隔)acme.myProject或acme.my_project无效 - 您必须acme.my-project在此处使用。

  • 属性名称可以使用 kebab-case(my-name),camel-case(myName)或 snake-case(my_name)。

  • 环境属性(来自操作系统环境变量)必须使用通常的大写下划线格式,下划线只能用于分隔键的各个部分ACME_MYPROJECT_MYNAME。

这种新的放松绑定具有以下几个优点:

  • 只要键值是按照标准格式定义的,就无需担忧在 @ConditionalOnProperty: 中键值的结构,被支持的宽松的变量将会自动透明的工作。如果你正在使用 prefix 属性,你可以简单地通过使用 name 或者value 属性 放入全键值。

  • 源于Environment 关注自动化,RelaxedPropertyResolver 将不再可用:env.getProperty("com.foo.my-bar") 将找到一个 com.foo.myBar 属性。

org.springframework.boot.bind 包将不再可用,现被 new relaxed binding infrastructure 替换。特别是,RelaxedDataBinder 相关的应用方式被替换为新的绑定API。

下面的列子实现一个 com.foo 为前缀的配置到一个 POJO。

MyProperties target = Binder.get(environment).bind("app.acme", MyProperties.class).orElse(null);

由于现在内置了轻松绑定,因此只要使用其中一种支持的格式,就可以请求任何属性而不必关心案例:

FlagType flagType = Binder.get(environment).bind("acme.app.my-flag", FlagType.class).orElse(FlagType.DEFAULT);

@ConfigurationProperties 校验
  如果要打开校验,需要在@ConfigurationProperties 对象上添加注解@Validated。

Configuration location 配置位置
  spring.config.location 配置的实现已经配置设定;基于提前添加一个位置到默认配置列表,现在它替换了 默认配置。

如果你是按照以前的方式进行处理,你应该使用spring.config.additional-location进行替换。

Configuration Property Sources

Spring Boot 2.0不是直接使用现有的PropertySource接口进行绑定,而是引入了一个新的ConfigurationPropertySource接口。 我们引入了一个新的接口,为我们提供了一个合理的地方来实施放松绑定规则,这些规则以前是活页夹的一部分接口的主要API非常简单:

ConfigurationProperty getConfigurationProperty(ConfigurationPropertyName name);

还有一个IterableConfigurationPropertySource变相的实现了Iterable 接口,以便您可以发现源包含的所有名称。

通过使用以下代码,可以将Spring Environment调整为ConfigurationPropertySources

sources = ConfigurationPropertySources.get(environment);

如果您需要它,我们还提供一个简单的MapConfigurationPropertySource实现。

实例:

// 原来的code:
RelaxedPropertyResolver propertyResolver =
new RelaxedPropertyResolver(environment, "spring.datasource");
propertyResolver.getSubProperties("....")
// 现在的code:
Iterable sources = ConfigurationPropertySources.get(environment);
Binder binder = new Binder(sources);
BindResult bindResult = binder.bind("spring.datasource", Properties.class);
Properties properties= bindResult.get();

本文转载自:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide

升级Spring Boot 2.x后RelaxedPropertyResolver不可用的解决方案相关推荐

  1. Spring Boot之基于Redis实现MyBatis查询缓存解决方案

    转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...

  2. 关于纯洁的微笑《Spring Boot(七):Mybatis 多数据源最简解决方案》文章补充说明多数据源事务的配置

    关于Spring boot中使用Mybatis多数据源的配置,我推荐纯洁的微笑博主的<Spring Boot(七):Mybatis 多数据源最简解决方案>这篇文章,简单清晰易懂 疑问 但是 ...

  3. CentOS 6.5升级Python后yum不可用的解决方案

    CentOS 6.5升级Python后yum不可用的解决方案 参考文章: (1)CentOS 6.5升级Python后yum不可用的解决方案 (2)https://www.cnblogs.com/he ...

  4. Spring Boot(七):Mybatis 多数据源最简解决方案

    Spring Boot(七):Mybatis 多数据源最简解决方案 参考文章: (1)Spring Boot(七):Mybatis 多数据源最简解决方案 (2)https://www.cnblogs. ...

  5. 升级Python后yum不可用的解决方案

    升级Python后yum不可用的解决方案 在Centos官网上查到了一篇文档,方法如下. 首先找到你安装Centos的光盘或者ISO文件,只要系统版本一样即可.拷贝如下文件到系统某目录中: pytho ...

  6. StackFlow 之 升级 Spring Boot V2.1.0(GA)

    前言 先来补一下SpringBoot V2.1.0(GA)的新特点:Spring Boot 2.0正式发布 升级项目使用的SpringBoot版本遇到的坑: WebMvcConfigurerAdapt ...

  7. 升级spring boot异常:spring循环依赖

    问题 从spring boot 2.2.9升级到2.6.2版本后,项目启动后访问报错 The dependencies of some of the beans in the application ...

  8. Whitelabel Error Page : spring boot项目启动后,无法访问@RequestMapping标注的请求

    springboot项目创建后,会自动生成一个标注有@SpringBootApplication注解的类,直接执行该类的main方法即可启动web项目,毕竟springboot已经内置了tomcat容 ...

  9. (转)Spring Boot(七):Mybatis 多数据源最简解决方案

    http://www.ityouknow.com/springboot/2016/11/25/spring-boot-multi-mybatis.html 说起多数据源,一般都来解决那些问题呢,主从模 ...

  10. spring boot启动 Failed to scan from classloader hierarchy 解决方案

    文章目录 错误如下 : 原由 第一次修改 二次改造如下: 错误如下 : 15:01:57.051 [restartedMain] WARN o.a.t.util.scan.StandardJarSca ...

最新文章

  1. sqlite3数据存储最多存储多少条数据?达到上限如何处理?_在数据爆炸的当下,教你设计一个能实现9个9数据可靠性的存储系统...
  2. 部署自建CA颁发证书实现https加密
  3. 可用子网数要不要减2_网络层 | 网际协议IP(2)
  4. Nhibernate和 Entity Framework 4优缺点
  5. linux系统盘比较小,35M的中文linux硬盘简单安装方法Live-CD:SliTaz.tw-全世界最小的li...
  6. PHP高德地图描点,引用高德地图描点画行动轨迹
  7. P6628-[省选联考 2020 B 卷] 丁香之路【欧拉回路,最小生成树】
  8. 从0到1 | 0基础/转行如何用3个月搞定机器学习
  9. 统计csv词频_分词词频统计
  10. UI设计实用排版法则,优秀可临摹案例,剖析设计实例
  11. php判断当前页面是否有权限,php判断是否有权限下载
  12. solr学习笔记-增加mmesg4J中文分词
  13. js中的继承1--类继承
  14. 超级有意思的图片注释
  15. FLASH BUILDER 清除图片缓存
  16. VMware mac虚拟机如何安装Windows系统
  17. R语言手动安装包-以ggplot2为例
  18. hashmap java 排序_HashMap的排序
  19. 全网目前最全python例子(附源码)
  20. 连续多帧图像光流对齐和光流运动检测

热门文章

  1. 企业网站建设为什么要定制开发?
  2. 最小二乘法—多项式拟合非线性函数
  3. 北京大学计算机学院刘利,信息科学学院 科研动态 深化新文科计算机教学改革,实施分类分层次教学体系研讨会在京召开...
  4. 软件开发常见的开发方向
  5. 手机版wps怎么制作折线图_怎么制作手机铃声 录制声音片段方法
  6. 2022网易校招易计划在线课程
  7. SQL数据分析之基础语法的注意事项与妙用【MySQL补充】
  8. C语言查表法实现CRC-32计算IEEE 802.3标准
  9. iTop-4412 SCP 精英版 linux-4.14.12 内核移植(2)
  10. 官网正版UltraEdit、UltraFTP、UltraCompare安装激活使用