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 ...
随机推荐
- Halcon安装注意事项
安装使用评估版本 下载并安装 在ihalcon中下载halcon,版本随意,因为我也不知道怎么选择适合自己的版本,那就下载一个比较新的版本,19.05版本. 安装目录默认在C:\Program Fil ...
- 简单理解TCP通信的三次握手
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接. 位码(可以理解为请求状态): 有6种标示:SYN(synchronous建立联机) ACK(acknowledg ...
- Swoole 的微信扫码登录
微信应用的便捷,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实 ...
- jmeter-使用代理服务器录制脚本
使用代理服务器录制脚本 1.测试计划-添加线程组 2.工作台添加HTTP代理服务器(路径:工作台-右键添加-非测试元件-HTTP代理服务器) 3.端口号一般由8888改为其他的 4.打开chrome的 ...
- 工厂模式在mvc模型中的应用
在web开发中我们常用mvc模式进行web应用的开发 当应用进入service 层的时候我们根据不同的业务多逻辑进行处理 当有数据进入controller的时候 public class Virtua ...
- 程序员修神之路--为什么有了SOA,我们还用微服务?
菜菜哥,我最近需要做一个项目,老大让我用微服务的方式来做 那挺好呀,微服务现在的确很流行 我以前在别的公司都是以SOA的方式,SOA也是面向服务的方式呀 的确,微服务和SOA有相同之处 面向服务的架构 ...
- 《如何学习基于ARM嵌入式系统》笔记整理
author:Peong time:20190603 如何学习基于ARM嵌入式系统 一.嵌入式系统的概念 从硬件上讲,将外围器件,与CPU集成在一起. 从操作系统上讲,定制符合要求的系统内核 从应用上 ...
- .NET Core System.Drawing.Common 中文乱码的坑
最近在写一个汉字取点阵的程序,最开始是在win环境下运行的,没发现什么异常,然后今天把程序放在centos 下后发现英文正常,中文完全变成两位的字了,最开始是字体的原因 在把宋体等安装到centos ...
- java代码实现MD5加密及验证方法
MD5加密 在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法 MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能 也就是说,给你密文,是几乎无法通 ...
- HTTP协议详解(一)——初识HTTP及请求
何为HTTP(超文本传输协议)? 协议,即约定俗成的规范.HTTP则是浏览器与服务器之间交流的一种规范.HTTP基于TCP/IP协议,属于应用层的协议. 为什么Web应用不使用TCP或者UDP协议呢? ...