接之前的文章 apache-commons 經常使用工具類 和文章 apache-commons 工具類擴展java
小家 Spring 對 spring 的工具類作了詳細的介紹(一) 這裏我抽出一些好用的類,不是那種靜態方法的類還有一些擴充來組成這篇博文git
小家 Spring 工具類 (二)spring
org.springframework.util.AntPathMatcher
數據庫
它能夠幫助咱們作一些路徑的匹配,能夠用於路徑映射規則匹配 。? (任何單字符) * (任意數量字符) **(任意目錄或文件)apache
org.springframework.util.PropertyPlaceholderHelper
json
jdk 的類庫中有一些用於字符串點位符的解析 ,像 String.format
,MessageFormat
api
String.format
只能順序來解析相似像 C 語言那樣的點位符,像 \d,\s
之類的。網絡
MessageFormat
支持像 {0} ,{1} 這樣的點位符。app
但有時候咱們更但願咱們的點位符名稱能夠自定義,和 spring 的佔位符同樣的使用,則可使用類框架
org.springframework.util.PropertyPlaceholderHelper
,你能夠自定義佔位符前綴後綴 ${ }
org.springframework.core.ParameterNameDiscoverer
這個是我在個人框架中使用過的解析參數名稱,將一個參數的方法名稱解析出來,雖然 java8 已經支持參數名稱,但仍是要在啓動時加一個參數才行,但這個工具不須要
ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer(); String[] parameterNames = parameterNameDiscoverer.getParameterNames(method);
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
能夠用來比較兩個媒體類型和一個是不是另外一個的子類等功能
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 來獲取編碼後的內容。
它組合了 AntPathMatcher
路徑匹配和 Resource
功能,將查找到的路徑轉換成 Resource 列表返回
org.springframework.util.MethodInvoker
把類,方法,參數列表,參數值打包起來,組成一個執行器,在寫底層反射時可能能用到
之前咱們在父類須要獲取子類的具體泛型類型時,須要經過 ParameterizedType
獲取方法的返回值的參數化類型用:method.getGenericReturnType
獲取字段的參數化類型用:field.getGenericType()
獲取方法參數的參數化類型用:method.getGenericParameterTypes()
簡單解釋下參數化類型 ParameterizedType
:java 中全部的類型都有一個超類 Type
,參數化類型是它的一種,表示有泛型的類型,像 List<E>
ParameterizedType
的方法 getActualTypeArguments
用於獲取泛型的類型列表,就是<> 中的內容,像 Map<K,V> 是有多個泛型參數的;
方法 getRawType
用於獲取類型,就是 <> 前面表示的類型;
方法 getOwnerType
用於處理有內部類的狀況,返回其包含類,若是沒有則爲空。
GenericTypeResolver
用於處理方法返回值,方法參數,字段,的泛型解析。
不區分 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