文章目录

  • 1. 为什么要使用Binder
  • 2. 通过`environment`的api获取
  • 3. 通过`Binder`获取
  • 4. @ConfigurationProperties与Binder

1. 为什么要使用Binder

举个例子,假设Spring的Environment内有以下属性

    public Environment mockEnvironment() {return new MockEnvironment().withProperty("user.name", "zzzj").withProperty("user.age", "25").withProperty("user.gender", "male").withProperty("user.fullname", "${user.name}1233").withProperty("hobby[0]", "eat").withProperty("hobby[1]", "drink").withProperty("hobby[2]", "play");}
  • 如何以user为前缀获取一个对象
  • 如何以hobby为前缀获取一个数组

2. 通过environment的api获取

    @Testpublic void getPropertyByEnvironment() {Environment environment = mockEnvironment();// 无法直接获取userassertNull(environment.getProperty("user"));// 可以通过具体的属性名获取到user.nameassertEquals("zzzj", environment.getProperty("user.name"));// 无法直接获取hobbyassertNull(environment.getProperty("hobby"));// 可以通过具体的属性名获取到hobby的第一项assertEquals("eat", environment.getProperty("hobby[0]"));}

3. 通过Binder获取

    @Testpublic void getPropertyByBinder() throws Exception {Binder binder = Binder.get(mockEnvironment());// 获取user属性, 作为一个 Map<String, Object>BindResult<Map<String, Object>> result = binder.bind("user", Bindable.mapOf(String.class, Object.class));assertThat(result.get()).hasSize(4).containsEntry("name", "zzzj").containsEntry("age", "25").containsEntry("gender", "male").containsEntry("fullname", "zzzj1233");// 获取hobby属性, 作为一个 String[]BindResult<String[]> hobby = binder.bind("hobby", Bindable.of(String[].class));assertThat(hobby.get()).hasSize(3).containsExactly("eat", "drink", "play");}

4. @ConfigurationProperties与Binder

在SpringBoot中有一个众所周知的注解@ConfigurationProperties
就是通过Binder来实现的

源码路径
org.springframework.boot.context.properties.ConfigurationPropertiesBinder#bind

SpringBoot-Binder的使用相关推荐

  1. 让SpringBoot不再需要Controller、Service、Mapper,这款开源工具绝了!!!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:my.oschina.net/ta8210/blog/3234639 Dataway介绍 Dataway 是基于 DataQL ...

  2. 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!

    点击关注公众号,Java干货及时送达 本文来源:http://8rr.co/eWem Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无 ...

  3. SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 问题发生 我们公司代码生成的时候,查询列表统一都是使用了s ...

  4. 绝了!Dataway让SpringBoot不在需要Controller、Service、DAO、Mapper了

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:哈库纳  地址:my.oschina.net/ta8210/ ...

  5. 十二、springboot 详解RestControllerAdvice(ControllerAdvice)

    springboot 详解RestControllerAdvice(ControllerAdvice)拦截异常并统一处理 简介 @Target({ElementType.TYPE}) @Retenti ...

  6. springboot controller调用service_绝了!Dataway让SpringBoot不在需要Controller、Service、DAO......

    Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得使用者无需开发任何代码就配置一个满足需求的接口.整个接口配置.测试.冒烟.发布.一站式都通过 ...

  7. 绝了!Dataway让 SpringBoot 变得更强大!

    作者:哈库纳   来源:my.oschina.net/ta8210/blog/3234639 Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得 ...

  8. SpringBoot是如何解析HTTP参数的?

    文章转载自公众号  清幽之地的博客 , 作者 清幽之地 前言 前几天笔者在写Rest接口的时候,看到了一种传值方式是以前没有写过的,就萌生了一探究竟的想法.在此之前,有篇文章曾涉及到这个话题,但那篇文 ...

  9. 绝了!这款工具让 SpringBoot 不再需要Controller、Service、DAO、Mapper!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:谈谈培训机构的骗局个人原创+1博客:点击前往,查看更多 作者:哈库纳 链接:https://my.oschina ...

  10. springboot @ConfigurationProperties注入属性流程

    一.编写实例,只要加上ConfigurationProperties注解,就会从当前springboot的Environment中读取配置属笥.Environment包括bootStrap,appli ...

最新文章

  1. kmp求前缀和后缀的最大重复部分
  2. day16-小数据池
  3. PCL点云库学习笔记 点云的欧式聚类
  4. 如何让mysql的自动递增的字段重新从1开始呢?(
  5. QML 界面切换的几种方法
  6. 连续时间系统与离散时间系统的时域分析对比
  7. 对不起,你那不叫努力,叫重复劳动
  8. 并查集判断是否有环存在
  9. C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
  10. 在Linux上安装Mysql 以及 涉及问题
  11. 关于C#窗体程序dataGridView控件的用法
  12. 拓端tecdat|R语言解决最优化运营研究问题-线性优化(LP)问题
  13. 如何高效看懂别人代码
  14. 苹果手机如何上传文件到服务器,有限条件下,如何将IPhone手机照片传到Windows电脑中?...
  15. 带键盘的java模拟器_虚拟键盘实现!JAVA模拟器PSPKVM v0.3.2推出
  16. 如何用easyx播放音乐,插入图片
  17. Dining POJ - 3281 (网络流)
  18. 【电磁】基于Matlab模拟电偶极子电磁场附GUI界面
  19. MACD指标的数学意义解析
  20. 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信

热门文章

  1. 构建自己的Android知识体系
  2. Python 常用魔法方法
  3. Focussend实战指南|如何最大限度提高线上活动的出席率和参与度?
  4. 星座 ——我喜欢它的介绍
  5. 【CNAS篇】电子数据提取与分析(电子数据存在性鉴定)-检验标准
  6. 计算机等级考试网络,全国计算机等级考试三级笔记三(网络的基本概念)
  7. 计算机与学科教学的深度融合,小学学科教学与计算机深度融合赛课心得体会(共4篇)...
  8. 如何使用 wget 下载一个目录下的所有文件
  9. java convert 使用,Convert.java
  10. 手机和电脑连接同一wifi,手机访问不了电脑起的项目