chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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編程精選 ? 來(lái)源: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 中引入,可通過(guò) JVM 參數(shù)-enableassertions開(kāi)啟

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)容開(kā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)
//刪除開(kāi)頭、結(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)無(wú)法正常使用,需要是一個(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)
//獲得類中所有方法,包括繼承而來(lái)的
Method[]getAllDeclaredMethods(ClassleafClass)
//在類中查找指定構(gòu)造方法
ConstructoraccessibleConstructor(Classclazz,Class...parameterTypes)
//是否是equals()方法
booleanisEqualsMethod(Methodmethod)
//是否是hashCode()方法
booleanisHashCodeMethod(Methodmethod)
//是否是toString()方法
booleanisToStringMethod(Methodmethod)
//是否是從Object類繼承而來(lái)的方法
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è)屬性過(guò)濾功能。
voiddoWithFields(Classclazz,ReflectionUtils.FieldCallbackfc,
ReflectionUtils.FieldFilterff)
//同上,但不包括繼承而來(lái)的屬性
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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7314

    瀏覽量

    93918
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15763

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我們先看看一個(gè)starter需要些什么。 Spring Boot Starter spring-boot
    的頭像 發(fā)表于 09-25 11:35 ?1277次閱讀
    <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》摘要:本文通過(guò)實(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 詳述

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

    Spring Boot特有的實(shí)踐

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

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

    ://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 ?2657次閱讀

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

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

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

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

    Spring Boot如何優(yōu)雅實(shí)現(xiàn)數(shù)據(jù)加密存儲(chǔ)、模糊匹配和脫敏

    近來(lái)我們都在圍繞著使用Spring Boot開(kāi)發(fā)業(yè)務(wù)系統(tǒng)時(shí)如何保證數(shù)據(jù)安全性這個(gè)主題展開(kāi)總結(jié),當(dāng)下大部分的B/S架構(gòu)的系統(tǒng)也都是基于Spring Boot + SpringMVC三層架
    的頭像 發(fā)表于 06-19 14:42 ?2773次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>如何優(yōu)雅實(shí)現(xiàn)數(shù)據(jù)加密存儲(chǔ)、模糊匹配和脫敏

    Spring Boot Actuator快速入門

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

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

    (String[] args) { SpringApplication .run (EurekaServer.class, args); }} 上面的代碼是最最平常的 Spring Boot 啟動(dòng)
    的頭像 發(fā)表于 10-10 11:40 ?1457次閱讀
    <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 包之后,需要通過(guò) -classpath 屬性
    的頭像 發(fā)表于 10-13 11:44 ?1205次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理

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

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