Spring 自帶工具類匯總

?

斷言

  • 斷言是一個邏輯判斷,用于檢查不應該發生的情況

  • Assert 關鍵字在 JDK1.4 中引入,可通過 JVM 參數-enableassertions開啟

  • SpringBoot 中提供了 Assert 斷言工具類,通常用于數據合法性檢查

//?要求參數?object?必須為非空(Not?Null),否則拋出異常,不予放行??
//?參數 message 參數用于定制異常信息。??
void?notNull(Object?object,?String?message)??
//?要求參數必須空(Null),否則拋出異常,不予『放行』。??
//?和?notNull()?方法斷言規則相反??
void?isNull(Object?object,?String?message)??
//?要求參數必須為真(True),否則拋出異常,不予『放行』。??
void?isTrue(boolean?expression,?String?message)??
//?要求參數(List/Set)必須非空(Not?Empty),否則拋出異常,不予放行??
void?notEmpty(Collection?collection,?String?message)??
//?要求參數(String)必須有長度(即,Not?Empty),否則拋出異常,不予放行??
void?hasLength(String?text,?String?message)??
//?要求參數(String)必須有內容(即,Not?Blank),否則拋出異常,不予放行??
void?hasText(String?text,?String?message)??
//?要求參數是指定類型的實例,否則拋出異常,不予放行??
void?isInstanceOf(Class?type,?Object?obj,?String?message)??
//?要求參數?`subType`?必須是參數?superType?的子類或實現類,否則拋出異常,不予放行??
void?isAssignable(Class?superType,?Class?subType,?String?message)

對象、數組、集合

ObjectUtils

獲取對象的基本信息

//?獲取對象的類名。參數為 null 時,返回字符串:"null"???
String?nullSafeClassName(Object?obj)??
//?參數為?null?時,返回?0??
int?nullSafeHashCode(Object?object)??
//?參數為 null 時,返回字符串:"null"??
String?nullSafeToString(boolean[]?array)??
//?獲取對象 HashCode(十六進制形式字符串)。參數為 null 時,返回?0???
String?getIdentityHexString(Object?obj)??
//?獲取對象的類名和 HashCode。?參數為 null 時,返回字符串:""???
String?identityToString(Object?obj)??
//?相當于 toString()方法,但參數為 null 時,返回字符串:""??
String?getDisplayString(Object?obj)

判斷工具

//?判斷數組是否為空??
boolean?isEmpty(Object[]?array)??
//?判斷參數對象是否是數組??
boolean?isArray(Object?obj)??
//?判斷數組中是否包含指定元素??
boolean?containsElement(Object[]?array,?Object?element)??
//?相等,或同為?null時,返回?true??
boolean?nullSafeEquals(Object?o1,?Object?o2)??
/*??
判斷參數對象是否為空,判斷標準為:??Optional:?Optional.empty()??Array:?length?==?0??
CharSequence:?length?==?0??Collection:?Collection.isEmpty()??Map:?Map.isEmpty()??
*/??
boolean?isEmpty(Object?obj)

其他工具方法

//?向參數數組的末尾追加新元素,并返回一個新數組??
<A,?O?extends?A>?A[]?addObjectToArray(A[]?array,?O?obj)??
//?原生基礎類型數組?-->?包裝類數組??
Object[]?toObjectArray(Object?source)

StringUtils

字符串判斷工具

//?判斷字符串是否為 null,或?""。注意,包含空白符的字符串為非空??
boolean?isEmpty(Object?str)??
//?判斷字符串是否是以指定內容結束。忽略大小寫??
boolean?endsWithIgnoreCase(String?str,?String?suffix)??
//?判斷字符串是否已指定內容開頭。忽略大小寫??
boolean?startsWithIgnoreCase(String?str,?String?prefix)???
//?是否包含空白符??
boolean?containsWhitespace(String?str)??
//?判斷字符串非空且長度不為?0,即,Not?Empty??
boolean?hasLength(CharSequence?str)??
//?判斷字符串是否包含實際內容,即非僅包含空白符,也就是?Not?Blank??
boolean?hasText(CharSequence?str)??
//?判斷字符串指定索引處是否包含一個子串。??
boolean?substringMatch(CharSequence?str,?int?index,?CharSequence?substring)??
//?計算一個字符串中指定子串的出現次數??
int?countOccurrencesOf(String?str,?String?sub)

字符串操作工具

//?查找并替換指定子串??
String?replace(String?inString,?String?oldPattern,?String?newPattern)??
//?去除尾部的特定字符??
String?trimTrailingCharacter(String?str,?char?trailingCharacter)???
//?去除頭部的特定字符??
String?trimLeadingCharacter(String?str,?char?leadingCharacter)??
//?去除頭部的空白符??
String?trimLeadingWhitespace(String?str)??
//?去除頭部的空白符??
String?trimTrailingWhitespace(String?str)??
//?去除頭部和尾部的空白符??
String?trimWhitespace(String?str)??
//?刪除開頭、結尾和中間的空白符??
String?trimAllWhitespace(String?str)??
//?刪除指定子串??
String?delete(String?inString,?String?pattern)??
//?刪除指定字符(可以是多個)??
String?deleteAny(String?inString,?String?charsToDelete)??
//?對數組的每一項執行?trim()?方法??
String[]?trimArrayElements(String[]?array)??
//?將?URL?字符串進行解碼??
String?uriDecode(String?source,?Charset?charset)

路徑相關工具方法

//?解析路徑字符串,優化其中的?“..”???
String?cleanPath(String?path)??
//?解析路徑字符串,解析出文件名部分??
String?getFilename(String?path)??
//?解析路徑字符串,解析出文件后綴名??
String?getFilenameExtension(String?path)??
//?比較兩個兩個字符串,判斷是否是同一個路徑。會自動處理路徑中的?“..”???
boolean?pathEquals(String?path1,?String?path2)??
//?刪除文件路徑名中的后綴部分??
String?stripFilenameExtension(String?path)???
//?以?“.?作為分隔符,獲取其最后一部分??
String?unqualify(String?qualifiedName)??
//?以指定字符作為分隔符,獲取其最后一部分??
String?unqualify(String?qualifiedName,?char?separator)

CollectionUtils

集合判斷工具

//?判斷?List/Set?是否為空??
boolean?isEmpty(Collection<?>?collection)??
//?判斷?Map?是否為空??
boolean?isEmpty(Map<?,?>?map)??
//?判斷?List/Set?中是否包含某個對象??
boolean?containsInstance(Collection<?>?collection,?Object?element)??
//?以迭代器的方式,判斷?List/Set?中是否包含某個對象??
boolean?contains(Iterator<?>?iterator,?Object?element)??
//?判斷?List/Set?是否包含某些對象中的任意一個??
boolean?containsAny(Collection<?>?source,?Collection<?>?candidates)??
//?判斷 List/Set 中的每個元素是否唯一。即 List/Set 中不存在重復元素??
boolean?hasUniqueObject(Collection<?>?collection)

集合操作工具

//?將?Array?中的元素都添加到?List/Set?中??
<E>?void?mergeArrayIntoCollection(Object?array,?Collection<E>?collection)????
//?將?Properties?中的鍵值對都添加到?Map?中??
<K,V>?void?mergePropertiesIntoMap(Properties?props,?Map<K,V>?map)??
//?返回?List?中最后一個元素??
<T>?T?lastElement(List<T>?list)????
//?返回?Set?中最后一個元素??
<T>?T?lastElement(Set<T>?set)???
//?返回參數?candidates?中第一個存在于參數?source?中的元素??
<E>?E?findFirstMatch(Collection<?>?source,?Collection<E>?candidates)??
//?返回 List/Set 中指定類型的元素。??
<T>?T?findValueOfType(Collection<?>?collection,?Class<T>?type)??
//?返回 List/Set 中指定類型的元素。如果第一種類型未找到,則查找第二種類型,以此類推??
Object?findValueOfType(Collection<?>?collection,?Class<?>[]?types)??
//?返回?List/Set?中元素的類型??
Class<?>?findCommonElementType(Collection<?>?collection)

文件、資源、IO 流

FileCopyUtils

  • 輸入

//?從文件中讀入到字節數組中??
byte[]?copyToByteArray(File?in)??
//?從輸入流中讀入到字節數組中??
byte[]?copyToByteArray(InputStream?in)??
//?從輸入流中讀入到字符串中??
String?copyToString(Reader?in)
  • 輸出

//?從字節數組到文件??
void?copy(byte[]?in,?File?out)??
//?從文件到文件??
int?copy(File?in,?File?out)??
//?從字節數組到輸出流??
void?copy(byte[]?in,?OutputStream?out)???
//?從輸入流到輸出流??
int?copy(InputStream?in,?OutputStream?out)???
//?從輸入流到輸出流??
int?copy(Reader?in,?Writer?out)??
//?從字符串到輸出流??
void?copy(String?in,?Writer?out)

ResourceUtils

從資源路徑獲取文件

//?判斷字符串是否是一個合法的 URL 字符串。??
static?boolean?isUrl(String?resourceLocation)??
//?獲取?URL??
static?URL?getURL(String?resourceLocation)???
//?獲取文件(在?JAR?包內無法正常使用,需要是一個獨立的文件)??
static?File?getFile(String?resourceLocation)

Resource

//?文件系統資源?D:\...??
FileSystemResource??
//?URL?資源,如?file://...?http://...??
UrlResource??
//?類路徑下的資源,classpth:...??
ClassPathResource??
//?Web?容器上下文中的資源(jar?包、war?包)??
ServletContextResource??
//?判斷資源是否存在??
boolean?exists()??
//?從資源中獲得?File?對象??
File?getFile()??
//?從資源中獲得?URI?對象??
URI?getURI()??
//?從資源中獲得?URI?對象??
URL?getURL()??
//?獲得資源的?InputStream??
InputStream?getInputStream()??
//?獲得資源的描述信息??
String?getDescription()

StreamUtils

輸入

void?copy(byte[]?in,?OutputStream?out)??
int?copy(InputStream?in,?OutputStream?out)??
void?copy(String?in,?Charset?charset,?OutputStream?out)??
long?copyRange(InputStream?in,?OutputStream?out,?long?start,?long?end)

輸出

byte[]?copyToByteArray(InputStream?in)??
String?copyToString(InputStream?in,?Charset?charset)??
//?舍棄輸入流中的內容??
int?drain(InputStream?in)

反射、AOP

ReflectionUtils

獲取方法

//?在類中查找指定方法??
Method?findMethod(Class<?>?clazz,?String?name)???
//?同上,額外提供方法參數類型作查找條件??
Method?findMethod(Class<?>?clazz,?String?name,?Class<?>...?paramTypes)???
//?獲得類中所有方法,包括繼承而來的??
Method[]?getAllDeclaredMethods(Class<?>?leafClass)???
//?在類中查找指定構造方法??
Constructor<T>?accessibleConstructor(Class<T>?clazz,?Class<?>...?parameterTypes)???
//?是否是?equals()?方法??
boolean?isEqualsMethod(Method?method)???
//?是否是?hashCode()?方法???
boolean?isHashCodeMethod(Method?method)???
//?是否是?toString()?方法??
boolean?isToStringMethod(Method?method)???
//?是否是從?Object?類繼承而來的方法??
boolean?isObjectMethod(Method?method)???
//?檢查一個方法是否聲明拋出指定異常??
boolean?declaresException(Method?method,?Class<?>?exceptionType)

執行方法

//?執行方法??
Object?invokeMethod(Method?method,?Object?target)????
//?同上,提供方法參數??
Object?invokeMethod(Method?method,?Object?target,?Object...?args)???
//?取消 Java 權限檢查。以便后續執行該私有方法??
void?makeAccessible(Method?method)???
//?取消 Java 權限檢查。以便后續執行私有構造方法??
void?makeAccessible(Constructor<?>?ctor)

獲取字段

//?在類中查找指定屬性??
Field?findField(Class<?>?clazz,?String?name)???
//?同上,多提供了屬性的類型??
Field?findField(Class<?>?clazz,?String?name,?Class<?>?type)???
//?是否為一個?"public?static?final"?屬性??
boolean?isPublicStaticFinal(Field?field)

設置字段

//?獲取?target?對象的?field?屬性值??
Object?getField(Field?field,?Object?target)???
//?設置?target?對象的?field?屬性值,值為?value??
void?setField(Field?field,?Object?target,?Object?value)???
//?同類對象屬性對等賦值??
void?shallowCopyFieldState(Object?src,?Object?dest)??
//?取消 Java 的權限控制檢查。以便后續讀寫該私有屬性??
void?makeAccessible(Field?field)???
//?對類的每個屬性執行?callback??
void?doWithFields(Class<?>?clazz,?ReflectionUtils.FieldCallback?fc)???
//?同上,多了個屬性過濾功能。??
void?doWithFields(Class<?>?clazz,?ReflectionUtils.FieldCallback?fc,???ReflectionUtils.FieldFilter?ff)???
//?同上,但不包括繼承而來的屬性??
void?doWithLocalFields(Class<?>?clazz,?ReflectionUtils.FieldCallback?fc)

AopUtils

判斷代理類型

//?判斷是不是?Spring?代理對象??
boolean?isAopProxy()??
//?判斷是不是?jdk?動態代理對象??
isJdkDynamicProxy()??
//?判斷是不是?CGLIB?代理對象??
boolean?isCglibProxy()??
獲取被代理對象的?class
//?獲取被代理的目標?class??
Class<?>?getTargetClass()

AopContext

獲取當前對象的代理對象

Object?currentProxy()


---------------------
作者:民工哥
來源:CSDN
原文:https://blog.csdn.net/mingongge/article/details/123123938
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284200.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決new Thread().Start導致高并發CPU 100%的問題

背景之前接手一個項目的時候&#xff0c;發現到處是new Thread(()>{ //do something }).Start();這么做的目的&#xff0c;無非是為了減少頁面等待時間提高用戶體驗&#xff0c;把一些浪費時間的操作放到新線程中在后臺運行。問題但是這樣帶來的問題是大量的創建線程&#x…

基于 HTML5 Canvas 繪制的電信網絡拓撲圖

電信網結構&#xff08;telecommunication network structure&#xff09;是指電信網各種網路單元按技術要求和經濟原則進行組合配置的組合邏輯和配置形式。組合邏輯描述網路功能的體系結構&#xff0c;配置形式描述網路單元的鄰接關系&#xff0c;即以交換中心&#xff08;或節…

網絡相關配置,SSH服務,bash, 元字符

作業一&#xff1a;臨時配置網絡&#xff08;ip&#xff0c;網關&#xff0c;dns&#xff09;永久配置 設置IP和掩碼ifconfig eth0 192.168.2.2 netmask 255.255.255.0設置網關route add default gw 192.168.2.10[rootbogon ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0…

【GlobalMapper精品教程】021:利用控制點校正柵格圖像

本文講解GlobalMapper中利用控制點校正柵格圖像的方法,數據為配套實驗數據包中的data021.rar。 文章目錄 一、結果預覽二、校正過程【推薦閱讀】:ArcGIS實驗教程——實驗二:ArcGIS地理配準完整操作步驟 一、結果預覽 二、校正過程 (1)打開圖像。選擇實驗包中的待校正的柵…

[筆記]提升R的性能和突破內存限制的技巧

本文為雪晴數據網《R語言大規模數據分析實戰》 http://www.xueqing.tv/course/56 的課程學習筆記。 該課程目前更新到“第2章 Microsoft R Server簡介”的微軟數據科學家介紹MRS&#xff0c;后續教學主要是關于MRS的內容&#xff0c;再另外學習&#xff0c;所以本文只學習“第1…

WTM:ASP.NET Core快速開發利器!

不少程序員朋友應該都有這個想法&#xff0c;接接私活&#xff0c;賺賺外快&#xff0c;但是從零開發一套系統并不容易&#xff0c;今天給大家推薦一款開箱即用的通用后臺管理系統。一個能夠讓程序猿快速開發的炒雞腳手架&#xff0c;采用.NET Core開源框架&#xff01;github地…

【CloudCompare教程】002:點云繪制模式詳解

文章目錄 1. 按高程著色2. 按索引著色3. 按漸變著色1. 按高程著色 在內容列表中選中點云圖層,點擊【編輯】→【標量領域】→【將坐標導出到SF】。 勾選Z,點擊OK。 高程著色效果: 2. 按索引著色 點擊【編輯】→【標量領域】→【添加點指數為SF】。 索引著色效果:

《首席產品官》成海清 著 圖書目錄 思維導圖

原文檔地址&#xff1a;《首席產品官》成海清

「每天一道面試題」如何理解方法的重載與覆蓋?

方法重載在同一個Java 類中&#xff08;包含父類&#xff09;&#xff0c;如果出現了方法名稱相同&#xff0c;而參數列表不同的情況就叫做重載。方法的重載的規則&#xff1a;&#xff08;1&#xff09;&#xff1a;方法名稱必須相同&#xff08;2&#xff09;&#xff1a;參數…

day63-webservice 01.cxf介紹

CXF功能就比較強了。CXF支持soap1.2。CXF和Spring整合的非常密切。它的配置文件基本就是Spring的配置文件了。CXF是要部署在服務器才能用的。CXF得放到Web容器里面去發布。CXF就可以整合咱們的Web容器。 cxf-2.4.0解壓出來之后 apache-cxf-2.4.2是核心包,apache-cxf-2.4.4-src是…

Java中的static關鍵字解析

static關鍵字是很多朋友在編寫代碼和閱讀代碼時碰到的比較難以理解的一個關鍵字&#xff0c;也是各大公司的面試官喜歡在面試時問到的知識點之一。下面就先講述一下static關鍵字的用法和平常容易誤解的地方&#xff0c;最后列舉了一些面試筆試中常見的關于static的考題。以下是…

微信公眾號授權登錄后報redirect_uri參數錯誤的問題

在進行微信公眾號二次開發的時候&#xff0c;需要通過授權碼模式來進行微信授權。比如&#xff0c;在進行登錄的時候&#xff0c;用戶點擊了登錄按鈕&#xff0c;然后彈出一個授權框&#xff0c;用戶點擊同意后&#xff0c;就可以獲取用戶的OpenId等信息了。這篇文章主要分享下…

【GlobalMapper精品教程】022:根據一個字段屬性值批量計算另一個字段屬性值(地類名稱求地類編碼)

項目中通常需要根據一個字段屬性值的不同,批量計算另一個字段屬性值(如根據地類名稱求地類編碼),根據權屬地物名稱給權屬地物編碼批量賦值等,本文講解在屬性表中根據代碼批量實現方法。 參考閱讀: 【ArcGIS風暴】ArcGIS 10.2字段計算器(Field Calculator)批量條件賦值用…

[轉]【讀書筆記】《俞軍產品方法論》——產品經理的枕邊書

作者簡介 俞軍&#xff0c;1997年畢業于同濟大學化學系。曾任百度產品副總裁、首席產品架構師&#xff0c;網名“搜索引擎9238”&#xff0c;有“百度貼吧之父”之稱。滴滴前高級產品副總裁。 內容簡介 摘抄語錄 我的產品潛力和優勢大約只來自三方面&#xff1a;第一&#xff0…

linux批量分發必會面試題,通過郵件反饋結果。

請準備三臺linux機器為別為A,B,C,要求實現以下內容1、用自己的名字用戶完成一把鑰匙開多把鎖&#xff08;A&#xff0c;鑰匙&#xff0c;B,C鎖&#xff09;的免密碼登錄部署場景該題在生產環境中的用途為&#xff1b;批量分發數據&#xff0c;批量發布程序代碼&#xff0c;批量…

【GlobalMapper精品教程】023:Excel數據通過相同字段連接到屬性表中(氣溫降水連接到氣象臺站)

globalmapper中也可以將Excel數據通過相同字段連接到屬性表中。本文講解將氣溫降水連接到氣象臺站點圖層中。 文章目錄 一、加載氣象臺站數據二、掛接氣溫降水數據一、加載氣象臺站數據 globalmapper中根據坐標生成點的方法,前面的文章有所說明: 【GlobalMapper精品教程】0…

記一次 .NET 某智慧物流WCS系統CPU爆高分析

一&#xff1a;背景 1. 講故事哈哈&#xff0c;再次見到物流類軟件&#xff0c;上個月有位朋友找到我&#xff0c;說他的程序出現了 CPU 爆高&#xff0c;讓我幫忙看下什么原因&#xff0c;由于那段時間在苦心研究 C&#xff0c;分析和經驗分享也就懈怠了&#xff0c;今天就給大…

c#調用存儲過程查詢表并返回影響的行數

// 在此處放置用戶代碼以初始化頁面 String DBConnStr; DataSet MyDataSet new DataSet(); SqlDataAdapter DataAdapter new SqlDataAdapter(); DBConnStr "server192.168.2.120,2433;databaseDB_test;uidsa;pwd43g"; Sq…

采用Atlas+Keepalived實現MySQL讀寫分離、讀負載均衡【轉載】

文章 原始出處 &#xff1a;http://sofar.blog.51cto.com/353572/1601552 一、基礎介紹 1、背景描述 目前我們的高可用DB的代理層采用的是360開源的Atlas&#xff0c;從上線以來&#xff0c;已穩定運行2個多月。無論是從性能上&#xff0c;還是穩定性上&#xff0c;相比其他開…