spring 工具类大集合
接以前的文章 apache-commons 常用工具类 和文章 apache-commons 工具类扩展
小家 Spring 对 spring 的工具类做了详细的介绍(一) 这里我抽出一些好用的类,不是那种静态方法的类还有一些扩充来组成这篇博文
路径匹配
org.springframework.util.AntPathMatcher
它可以帮助我们做一些路径的匹配,可以用于路径映射规则匹配 。? (任何单字符) * (任意数量字符) **(任意目录或文件)
占位符解析
org.springframework.util.PropertyPlaceholderHelper
jdk 的类库中有一些用于字符串点位符的解析 ,像 String.format
,MessageFormat
String.format
只能顺序来解析类似像 C 语言那样的点位符,像 \d,\s
之类的。
MessageFormat
支持像 {0} ,{1} 这样的点位符。
但有时候我们更希望我们的点位符名称可以自定义,和 spring 的占位符一样的使用,则可以使用类
org.springframework.util.PropertyPlaceholderHelper
,你可以自定义占位符前缀后缀 ${ }
方法参数名解析
org.springframework.core.ParameterNameDiscoverer
这个是我在我的框架中使用过的解析参数名称,将一个参数的方法名称解析出来,虽然 java8 已经支持参数名称,但还是要在启动时加一个参数才行,但这个工具不需要
ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
String[] parameterNames = parameterNameDiscoverer.getParameterNames(method);
媒体参数(MimeType)
org.springframework.util.MimeType
应该很多人被 http 的 contentType 搞晕过,常见的 application/json
,multipart/form-data
,application/x-www-form-urlencoded
,有时候还会加上字符集 application/json charset=utf-8
,其实这些上 postman 可以看得非常清楚。
另外在 spring 中也有专门针对这个的一个类 MimeType
和对应的一个工具类 MimeTypeUtils
,你可以使用它的一些常用 mime ,并且可以通过解析字符串来创建 MimeType
MimeType
可以用来比较两个媒体类型和一个是否是另一个的子类等功能
资源处理(Resource)
org.springframework.core.io.InputStreamSource
spring 把文件资源,上传的文件(MultipartFile
),网络资源,jar 包资源,都抽象成可以获取输入流的资源。
以前我都是用 InputStream
来传参会觉得很方便,不喜欢使用 File
传参或 path 传参,但 InputStream
来当做参数有一个不好的地方,就是流被读过一次,就无法再读取了,而使用者又不知道从哪去打开同样的流,用 spring 的 Resource 可以解决这一问题,常用的有
UrlResource
,FileUrlResource
,InputStreamResource
,ClassPathResource
对于 ClassPathResource
和 UrlResource
来说,有一个工具类可以直接获取到对应的资源 URL 和 File ,ResourceUtils
对于像文本文件需要编码的文件,需要将 Resource
做进一步包装 EncodedResource
,获取它的 Reader 来获取编码后的内容。
资源查找(PathMatchingResourcePatternResolver)
它组合了 AntPathMatcher
路径匹配和 Resource
功能,将查找到的路径转换成 Resource 列表返回
方法调用器 (MethodInvoker)
org.springframework.util.MethodInvoker
把类,方法,参数列表,参数值打包起来,组成一个执行器,在写底层反射时可能能用到
泛型解析(GenericTypeResolver)
以前我们在父类需要获取子类的具体泛型类型时,需要通过 ParameterizedType
获取方法的返回值的参数化类型用: method.getGenericReturnType
获取字段的参数化类型用:field.getGenericType()
获取方法参数的参数化类型用: method.getGenericParameterTypes()
简单解释下参数化类型 ParameterizedType
:java 中所有的类型都有一个超类 Type
,参数化类型是它的一种,表示有泛型的类型,像 List<E>
ParameterizedType
的方法 getActualTypeArguments
用于获取泛型的类型列表,就是<> 中的内容,像 Map<K,V> 是有多个泛型参数的;
方法 getRawType
用于获取类型,就是 <> 前面表示的类型;
方法 getOwnerType
用于处理有内部类的情况,返回其包含类,如果没有则为空。
GenericTypeResolver
用于处理方法返回值,方法参数,字段,的泛型解析。
一些增强的 map
不区分 key 的大小写的 map LinkedCaseInsensitiveMap
一键多值的 map LinkedMultiValueMap
另外 apache collections 提供了一个可以根据值反向查 key 的 map BidiMap
,这里补充一下
BidiMap<String, String> capitalCountryMap = new DualHashBidiMap<>();
capitalCountryMap.put("Berlin", "Germany");
capitalCountryMap.put("Cape Town", "South Africa");
String capitalOfGermany = capitalCountryMap.getKey("Germany");
增强性能的工具
FastByteArrayOutputStream
增强了 ByteArrayOutputStream
AlternativeJdkIdGenerator
代替 jdk 的 UUID 生成器
一点小推广
创作不易,希望可以支持下我的开源软件,及我的小工具,欢迎来 gitee 点星,fork ,提 bug 。
Excel 通用导入导出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi
使用模板代码 ,从数据库生成代码 ,及一些项目中经常可以用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven
spring 工具类大集合的更多相关文章
- 基于json-lib-2.2.2-jdk15.jar的JSON解析工具类大集合
json解析之前的必备工作:导入json解析必须的六个包 资源链接:百度云:链接:https://pan.baidu.com/s/1dAEQQy 密码:1v1z 代码示例: package com.s ...
- 通过CollectionUtils工具类判断集合是否为空,通过StringUtils工具类判断字符串是否为空
通过CollectionUtils工具类判断集合是否为空 先引入CollectionUtils工具类: import org.apache.commons.collections4.Collectio ...
- Spring工具类 非spring管理环境中获取bean及环境配置
SpringUtils.java import org.springframework.beans.BeansException; import org.springframework.beans.f ...
- Collections集合工具类,集合嵌套,集合综合案例斗地主
1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...
- 借助Spring工具类如何实现支持数据嵌套的赋值操作
假设有两个Bean A和B,想将B中的属性赋值到A实体中,可以使用get set来实现,当属性过多时,就会显得很冗余,可以使用spring提供的BeanUtils.copyProperties()来实 ...
- 浅谈集合框架六——集合扩展:Arrays工具类、集合与数组相互转换方式;
最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...
- Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug
集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...
- Spring工具类:WebApplicationContextUtils
当 Web 应用集成 Spring 容器后,代表 Spring 容器的WebApplicationContext对象将以 WebApplicationContext.ROOT_WEB_APPLICAT ...
- JDBC JdbTemplate&NamedParameterJdbcTemplate(Spring工具类)
使用该工具类需要从spring开发包中导入spring.jar和commons-logging.jar,这个模板是线程安全的. JdbcTemplate: public class JdbcTem ...
随机推荐
- Python爬取散文网散文
配置python 2.7 bs4 requests 安装 用pip进行安装 sudo pip install bs4 sudo pip install requests 简要说明一下bs4的使用因为是 ...
- 百万年薪python之路 -- 装饰器进阶
本文链接:https://blog.csdn.net/xiemanR/article/details/72510885 一:函数装饰函数 def wrapFun(func): def inner(a, ...
- C# 8.0 的默认接口方法
例子 直接看例子 有这样一个接口: 然后有三个它的实现类: 然后在main方法里面调用: 截至目前,程序都可以成功的编译和运行. IPerson接口变更 突然,我想对所有的人类添加一个新的特性,例如, ...
- 字符编码 + python2和python3的编码区别(day08整理)
目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...
- django-MVT设计模式
MVT:Models.Views.Templates Model:封装数据库,对数据库进行访问,对数据进行增删查改等. View:业务逻辑的一些操作. Templates:展示. 而MVC主要的流程如 ...
- MONGODB-LINUX 安装步骤
1.MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/download-center#communi ...
- Python编程 Notepad++和Pycharm设置
Notepad++ 一.缩进 初学Python的同学需要注意python的缩进,官方鼓励用4个空格缩进, 这时需要注意Tab键与空格的区分.使用Notepad++的同学可以在设置-首选项-制表符宽度中 ...
- 八、springboot 简单优雅的通过docker-compose 构建
前言 这个项目有一段时间没有更新了,不过我可没有偷懒哟,是偷偷准备了一个大招,现在是时候展示啦哈哈. 我们今天要做的,就是将我们的项目通过docker-compose 构建成镜像运行.为什么要这样做呢 ...
- 使用Typescript重构axios(二十二)——请求取消功能:收尾
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- 大数据之路day01_2--记事本与EditPlus编写Hello World并且运行
在上一节我们成功的安装JAVA并且将其环境配置成功,接下来我们来编写第一个java程序——Hello World 1.利用记事本编写代码,利用命令行来编译运行 (1)新建记事本,(文件名).java后 ...