RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Boot 內(nèi)置工具類功能

Android編程精選 ? 來源:Android編程精選 ? 作者:Android編程精選 ? 2022-10-24 14:57 ? 次閱讀

斷言

對(duì)象、數(shù)組、集合

ObjectUtils

StringUtils

CollectionUtil

文件、資源、IO 流

FileCopyUtils

ResourceUtils

StreamUtils

反射、AOP

ReflectionUtils

AopUtils

AopContext

最近發(fā)現(xiàn)同事寫了不少重復(fù)的工具類,發(fā)現(xiàn)其中很多功能,Spring 自帶的都有。于是整理了本文,希望能夠幫助到大家!

斷言

斷言是一個(gè)邏輯判斷,用于檢查不應(yīng)該發(fā)生的情況

Assert 關(guān)鍵字在 JDK1.4 中引入,可通過 JVM 參數(shù)-enableassertions開啟

SpringBoot 中提供了 Assert 斷言工具類,通常用于數(shù)據(jù)合法性檢查

//要求參數(shù)object必須為非空(NotNull),否則拋出異常,不予放行
//參數(shù) message 參數(shù)用于定制異常信息。
voidnotNull(Objectobject,Stringmessage)
//要求參數(shù)必須空(Null),否則拋出異常,不予『放行』。
//和notNull()方法斷言規(guī)則相反
voidisNull(Objectobject,Stringmessage)
//要求參數(shù)必須為真(True),否則拋出異常,不予『放行』。
voidisTrue(booleanexpression,Stringmessage)
//要求參數(shù)(List/Set)必須非空(NotEmpty),否則拋出異常,不予放行
voidnotEmpty(Collectioncollection,Stringmessage)
//要求參數(shù)(String)必須有長(zhǎng)度(即,NotEmpty),否則拋出異常,不予放行
voidhasLength(Stringtext,Stringmessage)
//要求參數(shù)(String)必須有內(nèi)容(即,NotBlank),否則拋出異常,不予放行
voidhasText(Stringtext,Stringmessage)
//要求參數(shù)是指定類型的實(shí)例,否則拋出異常,不予放行
voidisInstanceOf(Classtype,Objectobj,Stringmessage)
//要求參數(shù)`subType`必須是參數(shù)superType的子類或?qū)崿F(xiàn)類,否則拋出異常,不予放行
voidisAssignable(ClasssuperType,ClasssubType,Stringmessage)

對(duì)象、數(shù)組、集合

ObjectUtils

獲取對(duì)象的基本信息

//獲取對(duì)象的類名。參數(shù)為 null 時(shí),返回字符串:"null"
StringnullSafeClassName(Objectobj)
//參數(shù)為null時(shí),返回0
intnullSafeHashCode(Objectobject)
//參數(shù)為 null 時(shí),返回字符串:"null"
StringnullSafeToString(boolean[]array)
//獲取對(duì)象 HashCode(十六進(jìn)制形式字符串)。參數(shù)為 null 時(shí),返回0
StringgetIdentityHexString(Objectobj)
//獲取對(duì)象的類名和 HashCode。參數(shù)為 null 時(shí),返回字符串:""
StringidentityToString(Objectobj)
//相當(dāng)于 toString()方法,但參數(shù)為 null 時(shí),返回字符串:""
StringgetDisplayString(Objectobj)

判斷工具

//判斷數(shù)組是否為空
booleanisEmpty(Object[]array)
//判斷參數(shù)對(duì)象是否是數(shù)組
booleanisArray(Objectobj)
//判斷數(shù)組中是否包含指定元素
booleancontainsElement(Object[]array,Objectelement)
//相等,或同為null時(shí),返回true
booleannullSafeEquals(Objecto1,Objecto2)
/*
判斷參數(shù)對(duì)象是否為空,判斷標(biāo)準(zhǔn)為:
Optional:Optional.empty()
Array:length==0
CharSequence:length==0
Collection:Collection.isEmpty()
Map:Map.isEmpty()
*/
booleanisEmpty(Objectobj)

其他工具方法

//向參數(shù)數(shù)組的末尾追加新元素,并返回一個(gè)新數(shù)組
A[]addObjectToArray(A[]array,Oobj)
//原生基礎(chǔ)類型數(shù)組-->包裝類數(shù)組
Object[]toObjectArray(Objectsource)

StringUtils

字符串判斷工具

//判斷字符串是否為null,或""。注意,包含空白符的字符串為非空
booleanisEmpty(Objectstr)
//判斷字符串是否是以指定內(nèi)容結(jié)束。忽略大小寫
booleanendsWithIgnoreCase(Stringstr,Stringsuffix)
//判斷字符串是否已指定內(nèi)容開頭。忽略大小寫
booleanstartsWithIgnoreCase(Stringstr,Stringprefix)
//是否包含空白符
booleancontainsWhitespace(Stringstr)
//判斷字符串非空且長(zhǎng)度不為0,即,NotEmpty
booleanhasLength(CharSequencestr)
//判斷字符串是否包含實(shí)際內(nèi)容,即非僅包含空白符,也就是NotBlank
booleanhasText(CharSequencestr)
//判斷字符串指定索引處是否包含一個(gè)子串。
booleansubstringMatch(CharSequencestr,intindex,CharSequencesubstring)
//計(jì)算一個(gè)字符串中指定子串的出現(xiàn)次數(shù)
intcountOccurrencesOf(Stringstr,Stringsub)

字符串操作工具

//查找并替換指定子串
Stringreplace(StringinString,StringoldPattern,StringnewPattern)
//去除尾部的特定字符
StringtrimTrailingCharacter(Stringstr,chartrailingCharacter)
//去除頭部的特定字符
StringtrimLeadingCharacter(Stringstr,charleadingCharacter)
//去除頭部的空白符
StringtrimLeadingWhitespace(Stringstr)
//去除頭部的空白符
StringtrimTrailingWhitespace(Stringstr)
//去除頭部和尾部的空白符
StringtrimWhitespace(Stringstr)
//刪除開頭、結(jié)尾和中間的空白符
StringtrimAllWhitespace(Stringstr)
//刪除指定子串
Stringdelete(StringinString,Stringpattern)
//刪除指定字符(可以是多個(gè))
StringdeleteAny(StringinString,StringcharsToDelete)
//對(duì)數(shù)組的每一項(xiàng)執(zhí)行trim()方法
String[]trimArrayElements(String[]array)
//將URL字符串進(jìn)行解碼
StringuriDecode(Stringsource,Charsetcharset)

路徑相關(guān)工具方法

//解析路徑字符串,優(yōu)化其中的“..”
StringcleanPath(Stringpath)
//解析路徑字符串,解析出文件名部分
StringgetFilename(Stringpath)
//解析路徑字符串,解析出文件后綴名
StringgetFilenameExtension(Stringpath)
//比較兩個(gè)兩個(gè)字符串,判斷是否是同一個(gè)路徑。會(huì)自動(dòng)處理路徑中的“..”
booleanpathEquals(Stringpath1,Stringpath2)
//刪除文件路徑名中的后綴部分
StringstripFilenameExtension(Stringpath)
//以“.作為分隔符,獲取其最后一部分
Stringunqualify(StringqualifiedName)
//以指定字符作為分隔符,獲取其最后一部分
Stringunqualify(StringqualifiedName,charseparator)

CollectionUtils

集合判斷工具

//判斷List/Set是否為空
booleanisEmpty(Collectioncollection)
//判斷Map是否為空
booleanisEmpty(Mapmap)
//判斷List/Set中是否包含某個(gè)對(duì)象
booleancontainsInstance(Collectioncollection,Objectelement)
//以迭代器的方式,判斷List/Set中是否包含某個(gè)對(duì)象
booleancontains(Iteratoriterator,Objectelement)
//判斷List/Set是否包含某些對(duì)象中的任意一個(gè)
booleancontainsAny(Collectionsource,Collectioncandidates)
//判斷 List/Set 中的每個(gè)元素是否唯一。即 List/Set 中不存在重復(fù)元素
booleanhasUniqueObject(Collectioncollection)

集合操作工具

//將Array中的元素都添加到List/Set中
voidmergeArrayIntoCollection(Objectarray,Collectioncollection)
//將Properties中的鍵值對(duì)都添加到Map中
voidmergePropertiesIntoMap(Propertiesprops,Mapmap)
//返回List中最后一個(gè)元素
TlastElement(Listlist)
//返回Set中最后一個(gè)元素
TlastElement(Setset)
//返回參數(shù)candidates中第一個(gè)存在于參數(shù)source中的元素
EfindFirstMatch(Collectionsource,Collectioncandidates)
//返回 List/Set 中指定類型的元素。
TfindValueOfType(Collectioncollection,Classtype)
//返回 List/Set 中指定類型的元素。如果第一種類型未找到,則查找第二種類型,以此類推
ObjectfindValueOfType(Collectioncollection,Class[]types)
//返回List/Set中元素的類型
ClassfindCommonElementType(Collectiocollection)

文件、資源、IO 流

FileCopyUtils

輸入

//從文件中讀入到字節(jié)數(shù)組中
byte[]copyToByteArray(Filein)
//從輸入流中讀入到字節(jié)數(shù)組中
byte[]copyToByteArray(InputStreamin)
//從輸入流中讀入到字符串中
StringcopyToString(Readerin)

輸出

//從字節(jié)數(shù)組到文件
voidcopy(byte[]in,Fileout)
//從文件到文件
intcopy(Filein,Fileout)
//從字節(jié)數(shù)組到輸出流
voidcopy(byte[]in,OutputStreamout)
//從輸入流到輸出流
intcopy(InputStreamin,OutputStreamout)
//從輸入流到輸出流
intcopy(Readerin,Writerout)
//從字符串到輸出流
voidcopy(Stringin,Writerout)

ResourceUtils

從資源路徑獲取文件

//判斷字符串是否是一個(gè)合法的 URL 字符串。
staticbooleanisUrl(StringresourceLocation)
//獲取URL
staticURLgetURL(StringresourceLocation)
//獲取文件(在JAR包內(nèi)無法正常使用,需要是一個(gè)獨(dú)立的文件)
staticFilegetFile(StringresourceLocation)

Resource

//文件系統(tǒng)資源D:...
FileSystemResource
//URL資源,如file://...http://...
UrlResource
//類路徑下的資源,classpth:...
ClassPathResource
//Web容器上下文中的資源(jar包、war包)
ServletContextResource
//判斷資源是否存在
booleanexists()
//從資源中獲得File對(duì)象
FilegetFile()
//從資源中獲得URI對(duì)象
URIgetURI()
//從資源中獲得URI對(duì)象
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)
//舍棄輸入流中的內(nèi)容
intdrain(InputStreamin)

反射、AOP

ReflectionUtils

獲取方法

//在類中查找指定方法
MethodfindMethod(Classclazz,Stringname)
//同上,額外提供方法參數(shù)類型作查找條件
MethodfindMethod(Classclazz,Stringname,Class...paramTypes)
//獲得類中所有方法,包括繼承而來的
Method[]getAllDeclaredMethods(ClassleafClass)
//在類中查找指定構(gòu)造方法
ConstructoraccessibleConstructor(Classclazz,Class...parameterTypes)
//是否是equals()方法
booleanisEqualsMethod(Methodmethod)
//是否是hashCode()方法
booleanisHashCodeMethod(Methodmethod)
//是否是toString()方法
booleanisToStringMethod(Methodmethod)
//是否是從Object類繼承而來的方法
booleanisObjectMethod(Methodmethod)
//檢查一個(gè)方法是否聲明拋出指定異常
booleandeclaresException(Methodmethod,ClassexceptionType)

執(zhí)行方法

//執(zhí)行方法
ObjectinvokeMethod(Methodmethod,Objecttarget)
//同上,提供方法參數(shù)
ObjectinvokeMethod(Methodmethod,Objecttarget,Object...args)
//取消 Java 權(quán)限檢查。以便后續(xù)執(zhí)行該私有方法
voidmakeAccessible(Methodmethod)
//取消 Java 權(quán)限檢查。以便后續(xù)執(zhí)行私有構(gòu)造方法
voidmakeAccessible(Constructorctor)

獲取字段

//在類中查找指定屬性
FieldfindField(Classclazz,Stringname)
//同上,多提供了屬性的類型
FieldfindField(Classclazz,Stringname,Classtype)
//是否為一個(gè)"publicstaticfinal"屬性
booleanisPublicStaticFinal(Fieldfield)

設(shè)置字段

//獲取target對(duì)象的field屬性值
ObjectgetField(Fieldfield,Objecttarget)
//設(shè)置target對(duì)象的field屬性值,值為value
voidsetField(Fieldfield,Objecttarget,Objectvalue)
//同類對(duì)象屬性對(duì)等賦值
voidshallowCopyFieldState(Objectsrc,Objectdest)
//取消 Java 的權(quán)限控制檢查。以便后續(xù)讀寫該私有屬性
voidmakeAccessible(Fieldfield)
//對(duì)類的每個(gè)屬性執(zhí)行callback
voiddoWithFields(Classclazz,ReflectionUtils.FieldCallbackfc)
//同上,多了個(gè)屬性過濾功能。
voiddoWithFields(Classclazz,ReflectionUtils.FieldCallbackfc,
ReflectionUtils.FieldFilterff)
//同上,但不包括繼承而來的屬性
voiddoWithLocalFields(Classclazz,ReflectionUtils.FieldCallbackfc)

AopUtils

判斷代理類型

//判斷是不是Spring代理對(duì)象
booleanisAopProxy()
//判斷是不是jdk動(dòng)態(tài)代理對(duì)象
isJdkDynamicProxy()
//判斷是不是CGLIB代理對(duì)象
booleanisCglibProxy()

獲取被代理對(duì)象的 class

//獲取被代理的目標(biāo)class
ClassgetTargetClass()

AopContext

獲取當(dāng)前對(duì)象的代理對(duì)象

ObjectcurrentProxy()




審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7002

    瀏覽量

    88938
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14338

原文標(biāo)題:別再自己瞎寫工具類了,Spring Boot 內(nèi)置工具類應(yīng)有盡有, 建議收藏?。?/p>

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Spring Boot如何實(shí)現(xiàn)異步任務(wù)

    ,用來告訴 Spring 這個(gè)方法是一個(gè)異步方法,Spring 會(huì)將這個(gè)方法的執(zhí)行放在異步線程中進(jìn)行。使用 @Async 注解需要滿足以下條件: 需要在 Spring Boot
    的頭像 發(fā)表于 09-30 10:32 ?1436次閱讀

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我們先看看一個(gè)starter需要些什么。 Spring Boot Starter spring-boot
    的頭像 發(fā)表于 09-25 11:35 ?756次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> Starter需要些什么

    Spring boot中Redis的使用

    【本人禿頂程序員】springboot專輯:Spring boot中Redis的使用
    發(fā)表于 03-27 11:42

    Spring Boot嵌入式Web容器原理是什么

    Spring Boot嵌入式Web容器原理Spring Boot的目標(biāo)是構(gòu)建“非常容易創(chuàng)建、獨(dú)立、產(chǎn)品級(jí)別的基于Spring的應(yīng)用”。這些應(yīng)
    發(fā)表于 12-16 07:57

    Spring Boot框架錯(cuò)誤處理

    》 《strong》翻譯《/strong》:雁驚寒《/p》 《/blockquote》《p》《em》摘要:本文通過實(shí)例介紹了使用Spring Boot在設(shè)計(jì)API的時(shí)候如何正確地對(duì)異常進(jìn)行處理。以下是譯文《/em》《/p》《p》API在提供錯(cuò)誤消息的同時(shí)進(jìn)行適當(dāng)?shù)腻e(cuò)誤處理
    發(fā)表于 09-28 15:31 ?0次下載

    Spring Boot從零入門1 詳述

    在開始學(xué)習(xí)Spring Boot之前,我之前從未接觸過Spring相關(guān)的項(xiàng)目,Java基礎(chǔ)還是幾年前自學(xué)的,現(xiàn)在估計(jì)也忘得差不多了吧,寫Spring
    的頭像 發(fā)表于 12-10 22:18 ?632次閱讀

    Spring Boot特有的實(shí)踐

    Spring Boot是最流行的用于開發(fā)微服務(wù)的Java框架。在本文中,我將與你分享自2016年以來我在專業(yè)開發(fā)中使用Spring Boot所采用的最佳實(shí)踐。這些內(nèi)容是基于我的個(gè)人經(jīng)驗(yàn)
    的頭像 發(fā)表于 09-29 10:24 ?901次閱讀

    強(qiáng)大的Spring Boot 3.0要來了

    ://spring.io/blog/2022/10/20/spring-boot-3-0-0-rc1-available-now** 發(fā)布公告寫道,此版本包含 135 項(xiàng)功能增強(qiáng)、文檔改進(jìn)、依賴升級(jí)
    的頭像 發(fā)表于 10-31 11:17 ?1856次閱讀

    怎樣使用Kiuwan保護(hù)Spring Boot應(yīng)用程序呢?

    Spring Boot 提供了快速輕松地構(gòu)建基于Spring 的應(yīng)用程序所需的工具、功能和依賴項(xiàng)。
    的頭像 發(fā)表于 03-16 09:10 ?781次閱讀

    Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)

    上一篇文章我們已經(jīng)學(xué)會(huì)了如何通過IDEA快速建立一個(gè)Spring Boot項(xiàng)目,還介紹了Spring Boot項(xiàng)目的結(jié)構(gòu),介紹了項(xiàng)目配置文件pom.xml的組成部分,并且撰寫了我們
    的頭像 發(fā)表于 03-17 15:03 ?649次閱讀

    Spring Boot中如何使用定時(shí)任務(wù)

    本文介紹在 Spring Boot 中如何使用定時(shí)任務(wù),使用非常簡(jiǎn)單,就不做過多說明了。
    的頭像 發(fā)表于 04-12 10:56 ?965次閱讀

    Spring Boot Actuator快速入門

    一下 Spring Boot Actuator ,學(xué)習(xí)如何在 Spring Boot 2.x 中使用、配置和擴(kuò)展這個(gè)監(jiān)控工具。
    的頭像 發(fā)表于 10-09 17:11 ?633次閱讀

    Spring Boot啟動(dòng) Eureka流程

    (String[] args) { SpringApplication .run (EurekaServer.class, args); }} 上面的代碼是最最平常的 Spring Boot 啟動(dòng)
    的頭像 發(fā)表于 10-10 11:40 ?885次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動(dòng) Eureka流程

    Spring Boot的啟動(dòng)原理

    可能很多初學(xué)者會(huì)比較困惑,Spring Boot 是如何做到將應(yīng)用代碼和所有的依賴打包成一個(gè)獨(dú)立的 Jar 包,因?yàn)閭鹘y(tǒng)的 Java 項(xiàng)目打包成 Jar 包之后,需要通過 -classpath 屬性
    的頭像 發(fā)表于 10-13 11:44 ?643次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理

    Spring Boot 的設(shè)計(jì)目標(biāo)

    什么是Spring Boot Spring BootSpring 開源組織下的一個(gè)子項(xiàng)目,也是 S
    的頭像 發(fā)表于 10-13 14:56 ?580次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設(shè)計(jì)目標(biāo)
    RM新时代网站-首页