SpringBoot-Binder的使用
文章目录
- 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的使用相关推荐
- 让SpringBoot不再需要Controller、Service、Mapper,这款开源工具绝了!!!
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:my.oschina.net/ta8210/blog/3234639 Dataway介绍 Dataway 是基于 DataQL ...
- 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
点击关注公众号,Java干货及时送达 本文来源:http://8rr.co/eWem Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无 ...
- SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 问题发生 我们公司代码生成的时候,查询列表统一都是使用了s ...
- 绝了!Dataway让SpringBoot不在需要Controller、Service、DAO、Mapper了
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:哈库纳 地址:my.oschina.net/ta8210/ ...
- 十二、springboot 详解RestControllerAdvice(ControllerAdvice)
springboot 详解RestControllerAdvice(ControllerAdvice)拦截异常并统一处理 简介 @Target({ElementType.TYPE}) @Retenti ...
- springboot controller调用service_绝了!Dataway让SpringBoot不在需要Controller、Service、DAO......
Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得使用者无需开发任何代码就配置一个满足需求的接口.整个接口配置.测试.冒烟.发布.一站式都通过 ...
- 绝了!Dataway让 SpringBoot 变得更强大!
作者:哈库纳 来源:my.oschina.net/ta8210/blog/3234639 Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得 ...
- SpringBoot是如何解析HTTP参数的?
文章转载自公众号 清幽之地的博客 , 作者 清幽之地 前言 前几天笔者在写Rest接口的时候,看到了一种传值方式是以前没有写过的,就萌生了一探究竟的想法.在此之前,有篇文章曾涉及到这个话题,但那篇文 ...
- 绝了!这款工具让 SpringBoot 不再需要Controller、Service、DAO、Mapper!
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:谈谈培训机构的骗局个人原创+1博客:点击前往,查看更多 作者:哈库纳 链接:https://my.oschina ...
- springboot @ConfigurationProperties注入属性流程
一.编写实例,只要加上ConfigurationProperties注解,就会从当前springboot的Environment中读取配置属笥.Environment包括bootStrap,appli ...
最新文章
- kmp求前缀和后缀的最大重复部分
- day16-小数据池
- PCL点云库学习笔记 点云的欧式聚类
- 如何让mysql的自动递增的字段重新从1开始呢?(
- QML 界面切换的几种方法
- 连续时间系统与离散时间系统的时域分析对比
- 对不起,你那不叫努力,叫重复劳动
- 并查集判断是否有环存在
- C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
- 在Linux上安装Mysql 以及 涉及问题
- 关于C#窗体程序dataGridView控件的用法
- 拓端tecdat|R语言解决最优化运营研究问题-线性优化(LP)问题
- 如何高效看懂别人代码
- 苹果手机如何上传文件到服务器,有限条件下,如何将IPhone手机照片传到Windows电脑中?...
- 带键盘的java模拟器_虚拟键盘实现!JAVA模拟器PSPKVM v0.3.2推出
- 如何用easyx播放音乐,插入图片
- Dining POJ - 3281 (网络流)
- 【电磁】基于Matlab模拟电偶极子电磁场附GUI界面
- MACD指标的数学意义解析
- 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信
热门文章
- 构建自己的Android知识体系
- Python 常用魔法方法
- Focussend实战指南|如何最大限度提高线上活动的出席率和参与度?
- 星座 ——我喜欢它的介绍
- 【CNAS篇】电子数据提取与分析(电子数据存在性鉴定)-检验标准
- 计算机等级考试网络,全国计算机等级考试三级笔记三(网络的基本概念)
- 计算机与学科教学的深度融合,小学学科教学与计算机深度融合赛课心得体会(共4篇)...
- 如何使用 wget 下载一个目录下的所有文件
- java convert 使用,Convert.java
- 手机和电脑连接同一wifi,手机访问不了电脑起的项目