兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil
为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类。
在 Spring Boot 中,能够直接注入 XXProperties 类的地方不需要使用这个工具类。
但是在 Spring 的接口和启动流程设计中,有些情况下只能通过 EnvironmentAware 接口得到 Environment 对象,此时你想得到 XXProperties 类没有更好的办法。
也许有人直接从Environment 对象中遍历获取所有的配置信息,但是有一个无法完美解决的问题就是 relax 值,例如 first-name,firstName, FIRST_NAME 都可以代表同一个参数,在自己代码中很难处理这种情况。
通用 Mapper 在兼容两者过程中遇到过很多 BUG,这一次通过一个工具类解决了这个问题。
在 Spring Boot 1.x 中,可以通过下面代码绑定参数到对象:

Spring Boot 2.x 中,绑定更简单,如下:

上面这两段代码也是最近才找到,要不然这个功能会出现的更早。给大家推荐一个Java交流群:874811168 进群即可免费领取资料
由于上面的两处代码都在 spring-boot.jar 中,因此编译时不能同时依赖两个不同的版本,而且为了方便以后项目依赖从 1.x 升级到 2.x,因此针对上面两处代码全部使用反射实现。
简单用法如下:

至此通过 environment 就能得到想要的配置类了。
原文:https://blog.csdn.net/isea533/article/details/79121981
兼容 Spring Boot 1.x 和 2.x 配置类参数绑定的工具类 SpringBootBindUtil的更多相关文章
- Spring Boot 系列(三)属性配置&自定义属性配置
在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...
- 分布式事务、多数据源、分库分表中间件之spring boot基于Atomikos+XADataSource分布式事务配置(100%纯动态)
本文描述spring boot基于Atomikos+DruidXADataSource分布式事务配置(100%纯动态),也就是增加.减少数据源只需要修改application.properties文件 ...
- 让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean
让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...
- 20. Spring Boot 默认、自定义数据源 、配置多个数据源 jdbcTemplate操作DB
Spring-Boot-2.0.0-M1版本将默认的数据库连接池从tomcat jdbc pool改为了hikari,这里主要研究下hikari的默认配置 0. 创建Spring Boot项目,选中 ...
- Spring Boot 多模块项目创建与配置 (一) (转)
Spring Boot 多模块项目创建与配置 (一) 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多个模块.代码中的多模块是用maven管理的,每个模块都 ...
- Spring Boot 源码分析 数据源 + Mybatis 配置
公司今年开始使用 Spring Boot 开发,当然使用 Spring Boot 也是大势所趋,尤其是现在微服务的趋向,当然是选择基于Spring Boot 的 Spring Cloud.(所谓的 S ...
- Spring Boot 多模块项目创建与配置 (一)
最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多个模块.代码中的多模块是用maven管理的,每个模块都使用spring boot框架.之前有零零散散学过一些 ...
- Spring Boot 2.x Redis多数据源配置(jedis,lettuce)
Spring Boot 2.x Redis多数据源配置(jedis,lettuce) 96 不敢预言的预言家 0.1 2018.11.13 14:22* 字数 65 阅读 727评论 0喜欢 2 多数 ...
- 51. spring boot属性文件之多环境配置【从零开始学Spring Boot】
原本这个章节是要介绍<log4j多环境不同日志级别的控制的>但是没有这篇文章做基础的话,学习起来还是有点难度的,所以我们先一起了解下spring boot属性文件之多环境配置,当然文章中也 ...
随机推荐
- Parco_Love_gcd
传送门 出题人说正解为RMQ,鄙人实在太蒟蒻了,不会呀只能暴力…… #include <bits/stdc++.h> using namespace std; #define ll lon ...
- IDEA eclipse转maven
在pom.xml 文件上右键 Add as Maven Project
- date_default_timezone_set()问题解决方案(PHP5.3以上的)
date() [<a href='function.date'>function.date</a>]: It is not safe to rely on the syst ...
- form提交xml文件
--为何ajax提交不了xml?--原因:Request.Form["Data"]这种获取参数方式,原本就不是mvc路由参数获取方式,这是Asp.net中webfrom页面获取参数 ...
- 检查文件是否被修改或者被破坏工具 md5
检查文件和对应的md5值是否一致.
- Mysql授权root用户远程登录
默认情况下Mysql的root用户不支持远程登录,使用以下命令授权 [Charles@localhost ~]$ mysql -uroot -p123 MariaDB [(none)]> u ...
- python-15
递归特性: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种 ...
- Linux文件系统的硬连接和软连接
title: Linux文件系统的硬连接和软连接 date: 2018-02-06T20:26:25+08:00 tags: ["文件系统"] categories: [" ...
- Django框架详细介绍---ORM---图书信息系统专题训练
from django.db import models # Create your models here. # 书 class Book(models.Model): title = models ...
- NOIP2017感想
说实话,这次刚刚看到题目的时候真的有点懵.尤其是第一天的第一题,浪费了太多的时间,一开始天真的以为10的9次方,会爆long long.然后就特别傻的写一个高精度,总觉得自己有哪些细节方面处理的不到位 ...