斷言
對象、數組、集合
ObjectUtils
StringUtils
CollectionUtil
文件、資源、IO 流
FileCopyUtils
ResourceUtils
StreamUtils
反射、AOP
ReflectionUtils
AopUtils
AopContext
最近發現同事寫了不少重復的工具類,發現其中很多功能,Spring 自帶的都有。于是整理了本文,希望能夠幫助到大家!
斷言
斷言是一個邏輯判斷,用于檢查不應該發生的情況
Assert 關鍵字在 JDK1.4 中引入,可通過 JVM 參數-enableassertions開啟
SpringBoot 中提供了 Assert 斷言工具類,通常用于數據合法性檢查
//要求參數object必須為非空(NotNull),否則拋出異常,不予放行 //參數 message 參數用于定制異常信息。 voidnotNull(Objectobject,Stringmessage) //要求參數必須空(Null),否則拋出異常,不予『放行』。 //和notNull()方法斷言規則相反 voidisNull(Objectobject,Stringmessage) //要求參數必須為真(True),否則拋出異常,不予『放行』。 voidisTrue(booleanexpression,Stringmessage) //要求參數(List/Set)必須非空(NotEmpty),否則拋出異常,不予放行 voidnotEmpty(Collectioncollection,Stringmessage) //要求參數(String)必須有長度(即,NotEmpty),否則拋出異常,不予放行 voidhasLength(Stringtext,Stringmessage) //要求參數(String)必須有內容(即,NotBlank),否則拋出異常,不予放行 voidhasText(Stringtext,Stringmessage) //要求參數是指定類型的實例,否則拋出異常,不予放行 voidisInstanceOf(Classtype,Objectobj,Stringmessage) //要求參數`subType`必須是參數superType的子類或實現類,否則拋出異常,不予放行 voidisAssignable(ClasssuperType,ClasssubType,Stringmessage)
對象、數組、集合
ObjectUtils
獲取對象的基本信息
//獲取對象的類名。參數為 null 時,返回字符串:"null" StringnullSafeClassName(Objectobj) //參數為null時,返回0 intnullSafeHashCode(Objectobject) //參數為 null 時,返回字符串:"null" StringnullSafeToString(boolean[]array) //獲取對象 HashCode(十六進制形式字符串)。參數為 null 時,返回0 StringgetIdentityHexString(Objectobj) //獲取對象的類名和 HashCode。參數為 null 時,返回字符串:"" StringidentityToString(Objectobj) //相當于 toString()方法,但參數為 null 時,返回字符串:"" StringgetDisplayString(Objectobj)
判斷工具
//判斷數組是否為空 booleanisEmpty(Object[]array) //判斷參數對象是否是數組 booleanisArray(Objectobj) //判斷數組中是否包含指定元素 booleancontainsElement(Object[]array,Objectelement) //相等,或同為null時,返回true booleannullSafeEquals(Objecto1,Objecto2) /* 判斷參數對象是否為空,判斷標準為: Optional:Optional.empty() Array:length==0 CharSequence:length==0 Collection:Collection.isEmpty() Map:Map.isEmpty() */ booleanisEmpty(Objectobj)
其他工具方法
//向參數數組的末尾追加新元素,并返回一個新數組 A[]addObjectToArray(A[]array,Oobj) //原生基礎類型數組-->包裝類數組 Object[]toObjectArray(Objectsource)
StringUtils
字符串判斷工具
//判斷字符串是否為null,或""。注意,包含空白符的字符串為非空 booleanisEmpty(Objectstr) //判斷字符串是否是以指定內容結束。忽略大小寫 booleanendsWithIgnoreCase(Stringstr,Stringsuffix) //判斷字符串是否已指定內容開頭。忽略大小寫 booleanstartsWithIgnoreCase(Stringstr,Stringprefix) //是否包含空白符 booleancontainsWhitespace(Stringstr) //判斷字符串非空且長度不為0,即,NotEmpty booleanhasLength(CharSequencestr) //判斷字符串是否包含實際內容,即非僅包含空白符,也就是NotBlank booleanhasText(CharSequencestr) //判斷字符串指定索引處是否包含一個子串。 booleansubstringMatch(CharSequencestr,intindex,CharSequencesubstring) //計算一個字符串中指定子串的出現次數 intcountOccurrencesOf(Stringstr,Stringsub)
字符串操作工具
//查找并替換指定子串 Stringreplace(StringinString,StringoldPattern,StringnewPattern) //去除尾部的特定字符 StringtrimTrailingCharacter(Stringstr,chartrailingCharacter) //去除頭部的特定字符 StringtrimLeadingCharacter(Stringstr,charleadingCharacter) //去除頭部的空白符 StringtrimLeadingWhitespace(Stringstr) //去除頭部的空白符 StringtrimTrailingWhitespace(Stringstr) //去除頭部和尾部的空白符 StringtrimWhitespace(Stringstr) //刪除開頭、結尾和中間的空白符 StringtrimAllWhitespace(Stringstr) //刪除指定子串 Stringdelete(StringinString,Stringpattern) //刪除指定字符(可以是多個) StringdeleteAny(StringinString,StringcharsToDelete) //對數組的每一項執行trim()方法 String[]trimArrayElements(String[]array) //將URL字符串進行解碼 StringuriDecode(Stringsource,Charsetcharset)
路徑相關工具方法
//解析路徑字符串,優化其中的“..” StringcleanPath(Stringpath) //解析路徑字符串,解析出文件名部分 StringgetFilename(Stringpath) //解析路徑字符串,解析出文件后綴名 StringgetFilenameExtension(Stringpath) //比較兩個兩個字符串,判斷是否是同一個路徑。會自動處理路徑中的“..” booleanpathEquals(Stringpath1,Stringpath2) //刪除文件路徑名中的后綴部分 StringstripFilenameExtension(Stringpath) //以“.作為分隔符,獲取其最后一部分 Stringunqualify(StringqualifiedName) //以指定字符作為分隔符,獲取其最后一部分 Stringunqualify(StringqualifiedName,charseparator)
CollectionUtils
集合判斷工具
//判斷List/Set是否為空 booleanisEmpty(Collection>collection) //判斷Map是否為空 booleanisEmpty(Map,?>map) //判斷List/Set中是否包含某個對象 booleancontainsInstance(Collection>collection,Objectelement) //以迭代器的方式,判斷List/Set中是否包含某個對象 booleancontains(Iterator>iterator,Objectelement) //判斷List/Set是否包含某些對象中的任意一個 booleancontainsAny(Collection>source,Collection>candidates) //判斷 List/Set 中的每個元素是否唯一。即 List/Set 中不存在重復元素 booleanhasUniqueObject(Collection>collection)
集合操作工具
//將Array中的元素都添加到List/Set中voidmergeArrayIntoCollection(Objectarray,Collection collection) //將Properties中的鍵值對都添加到Map中 voidmergePropertiesIntoMap(Propertiesprops,Map map) //返回List中最后一個元素 TlastElement(List list) //返回Set中最后一個元素 TlastElement(Set set) //返回參數candidates中第一個存在于參數source中的元素 EfindFirstMatch(Collection>source,Collection candidates) //返回 List/Set 中指定類型的元素。 TfindValueOfType(Collection>collection,Class type) //返回 List/Set 中指定類型的元素。如果第一種類型未找到,則查找第二種類型,以此類推 ObjectfindValueOfType(Collection>collection,Class>[]types) //返回List/Set中元素的類型 Class>findCommonElementType(Collectio>collection)
文件、資源、IO 流
FileCopyUtils
輸入
//從文件中讀入到字節數組中 byte[]copyToByteArray(Filein) //從輸入流中讀入到字節數組中 byte[]copyToByteArray(InputStreamin) //從輸入流中讀入到字符串中 StringcopyToString(Readerin)
輸出
//從字節數組到文件 voidcopy(byte[]in,Fileout) //從文件到文件 intcopy(Filein,Fileout) //從字節數組到輸出流 voidcopy(byte[]in,OutputStreamout) //從輸入流到輸出流 intcopy(InputStreamin,OutputStreamout) //從輸入流到輸出流 intcopy(Readerin,Writerout) //從字符串到輸出流 voidcopy(Stringin,Writerout)
ResourceUtils
從資源路徑獲取文件
//判斷字符串是否是一個合法的 URL 字符串。 staticbooleanisUrl(StringresourceLocation) //獲取URL staticURLgetURL(StringresourceLocation) //獲取文件(在JAR包內無法正常使用,需要是一個獨立的文件) staticFilegetFile(StringresourceLocation)
Resource
//文件系統資源D:... FileSystemResource //URL資源,如file://...http://... UrlResource //類路徑下的資源,classpth:... ClassPathResource //Web容器上下文中的資源(jar包、war包) ServletContextResource //判斷資源是否存在 booleanexists() //從資源中獲得File對象 FilegetFile() //從資源中獲得URI對象 URIgetURI() //從資源中獲得URI對象 URLgetURL() //獲得資源的InputStream InputStreamgetInputStream() //獲得資源的描述信息 StringgetDescription()
StreamUtils
輸入
voidcopy(byte[]in,OutputStreamout) intcopy(InputStreamin,OutputStreamout) voidcopy(Stringin,Charsetcharset,OutputStreamout) longcopyRange(InputStreamin,OutputStreamout,longstart,longend)
輸出
byte[]copyToByteArray(InputStreamin) StringcopyToString(InputStreamin,Charsetcharset) //舍棄輸入流中的內容 intdrain(InputStreamin)
反射、AOP
ReflectionUtils
獲取方法
//在類中查找指定方法 MethodfindMethod(Class>clazz,Stringname) //同上,額外提供方法參數類型作查找條件 MethodfindMethod(Class>clazz,Stringname,Class>...paramTypes) //獲得類中所有方法,包括繼承而來的 Method[]getAllDeclaredMethods(Class>leafClass) //在類中查找指定構造方法 ConstructoraccessibleConstructor(Class clazz,Class>...parameterTypes) //是否是equals()方法 booleanisEqualsMethod(Methodmethod) //是否是hashCode()方法 booleanisHashCodeMethod(Methodmethod) //是否是toString()方法 booleanisToStringMethod(Methodmethod) //是否是從Object類繼承而來的方法 booleanisObjectMethod(Methodmethod) //檢查一個方法是否聲明拋出指定異常 booleandeclaresException(Methodmethod,Class>exceptionType)
執行方法
//執行方法 ObjectinvokeMethod(Methodmethod,Objecttarget) //同上,提供方法參數 ObjectinvokeMethod(Methodmethod,Objecttarget,Object...args) //取消 Java 權限檢查。以便后續執行該私有方法 voidmakeAccessible(Methodmethod) //取消 Java 權限檢查。以便后續執行私有構造方法 voidmakeAccessible(Constructor>ctor)
獲取字段
//在類中查找指定屬性 FieldfindField(Class>clazz,Stringname) //同上,多提供了屬性的類型 FieldfindField(Class>clazz,Stringname,Class>type) //是否為一個"publicstaticfinal"屬性 booleanisPublicStaticFinal(Fieldfield)
設置字段
//獲取target對象的field屬性值 ObjectgetField(Fieldfield,Objecttarget) //設置target對象的field屬性值,值為value voidsetField(Fieldfield,Objecttarget,Objectvalue) //同類對象屬性對等賦值 voidshallowCopyFieldState(Objectsrc,Objectdest) //取消 Java 的權限控制檢查。以便后續讀寫該私有屬性 voidmakeAccessible(Fieldfield) //對類的每個屬性執行callback voiddoWithFields(Class>clazz,ReflectionUtils.FieldCallbackfc) //同上,多了個屬性過濾功能。 voiddoWithFields(Class>clazz,ReflectionUtils.FieldCallbackfc, ReflectionUtils.FieldFilterff) //同上,但不包括繼承而來的屬性 voiddoWithLocalFields(Class>clazz,ReflectionUtils.FieldCallbackfc)
AopUtils
判斷代理類型
//判斷是不是Spring代理對象 booleanisAopProxy() //判斷是不是jdk動態代理對象 isJdkDynamicProxy() //判斷是不是CGLIB代理對象 booleanisCglibProxy()
獲取被代理對象的 class
//獲取被代理的目標class Class>getTargetClass()
AopContext
獲取當前對象的代理對象
ObjectcurrentProxy()
-
數據
+關注
關注
8文章
7239瀏覽量
90989 -
spring
+關注
關注
0文章
340瀏覽量
14878
原文標題:別再自己瞎寫工具類了,Spring Boot 內置工具類應有盡有, 建議收藏!!
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Spring Boot如何實現異步任務
Spring Boot Starter需要些什么

Spring Boot嵌入式Web容器原理是什么
Spring Boot框架錯誤處理
Spring Boot從零入門1 詳述
「Spring認證」什么是Spring GraphQL?

Spring Boot特有的實踐
強大的Spring Boot 3.0要來了
怎樣使用Kiuwan保護Spring Boot應用程序呢?
Spring Boot Web相關的基礎知識
Spring Boot Actuator快速入門
Spring Boot啟動 Eureka流程

Spring Boot的啟動原理

評論