1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        推薦好用 Spring Boot 內(nèi)置工具類

        共 8684字,需瀏覽 18分鐘

         ·

        2022-02-23 19:02

        關(guān)注我們,設(shè)為星標(biāo),每天7:30不見不散,架構(gòu)路上與您共享

        回復(fù)架構(gòu)師獲取資源


        大家好,我是架構(gòu)君,一個會寫代碼吟詩的架構(gòu)師。

        'javajgs.com';


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

        斷言

        1. 斷言是一個邏輯判斷,用于檢查不應(yīng)該發(fā)生的情況
        2. Assert 關(guān)鍵字在 JDK1.4 中引入,可通過 JVM 參數(shù)-enableassertions開啟
        3. SpringBoot 中提供了 Assert 斷言工具類,通常用于數(shù)據(jù)合法性檢查
        // 要求參數(shù) object 必須為非空(Not Null),否則拋出異常,不予放行
        // 參數(shù) message 參數(shù)用于定制異常信息。
        void?notNull(Object?object, String?message)
        // 要求參數(shù)必須空(Null),否則拋出異常,不予『放行』。
        // 和 notNull() 方法斷言規(guī)則相反
        void?isNull(Object?object, String?message)
        // 要求參數(shù)必須為真(True),否則拋出異常,不予『放行』。
        void?isTrue(boolean?expression, String?message)
        // 要求參數(shù)(List/Set)必須非空(Not Empty),否則拋出異常,不予放行
        void?notEmpty(Collection collection, String?message)
        // 要求參數(shù)(String)必須有長度(即,Not Empty),否則拋出異常,不予放行
        void?hasLength(String?text, String?message)
        // 要求參數(shù)(String)必須有內(nèi)容(即,Not Blank),否則拋出異常,不予放行
        void?hasText(String?text, String?message)
        // 要求參數(shù)是指定類型的實例,否則拋出異常,不予放行
        void?isInstanceOf(Class type, Object?obj, String?message)
        // 要求參數(shù) `subType` 必須是參數(shù) superType 的子類或?qū)崿F(xiàn)類,否則拋出異常,不予放行
        void?isAssignable(Class superType, Class subType, String?message)

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

        ObjectUtils

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

        2. 判斷工具

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

        boolean?isEmpty(Object?obj)

        3. 其他工具方法

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

        StringUtils

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

        2. 字符串操作工具

        // 查找并替換指定子串
        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)
        // 刪除開頭、結(jié)尾和中間的空白符
        String?trimAllWhitespace(String?str)
        // 刪除指定子串
        String?delete(String?inString, String?pattern)
        // 刪除指定字符(可以是多個)
        String?deleteAny(String?inString, String?charsToDelete)
        // 對數(shù)組的每一項執(zhí)行 trim() 方法
        String[] trimArrayElements(String[] array)
        // 將 URL?字符串進行解碼
        String?uriDecode(String?source, Charset?charset)

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

        // 解析路徑字符串,優(yōu)化其中的 “..” 
        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

        1. 集合判斷工具

        // 判斷 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?中不存在重復(fù)元素
        boolean?hasUniqueObject(Collection collection)


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

        文件、資源、IO 流

        FileCopyUtils

        1. 輸入
        // 從文件中讀入到字節(jié)數(shù)組中
        byte[] copyToByteArray(File in)
        // 從輸入流中讀入到字節(jié)數(shù)組中
        byte[] copyToByteArray(InputStream in)
        // 從輸入流中讀入到字符串中
        String copyToString(Reader in)

        2. 輸出

        // 從字節(jié)數(shù)組到文件
        void?copy(byte[] in, File out)
        // 從文件到文件
        int?copy(File in, File out)
        // 從字節(jié)數(shù)組到輸出流
        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

        1. 從資源路徑獲取文件

        // 判斷字符串是否是一個合法的 URL 字符串。
        static?boolean?isUrl(String?resourceLocation)
        // 獲取 URL
        static?URL getURL(String?resourceLocation)
        // 獲取文件(在 JAR 包內(nèi)無法正常使用,需要是一個獨立的文件)
        static?File getFile(String?resourceLocation)
        2. Resource
        // 文件系統(tǒng)資源 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

        1. 輸入

        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)

        2. 輸出

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

        反射、AOP

        ReflectionUtils

        1. 獲取方法
        // 在類中查找指定方法
        Method findMethod(Class clazz, String?name)
        // 同上,額外提供方法參數(shù)類型作查找條件
        Method findMethod(Class clazz, String?name, Class... paramTypes)
        // 獲得類中所有方法,包括繼承而來的
        Method[] getAllDeclaredMethods(Class leafClass)
        // 在類中查找指定構(gòu)造方法
        Constructor accessibleConstructor(Class 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)
        2. 執(zhí)行方法
        // 執(zhí)行方法
        Object?invokeMethod(Method method, Object?target)
        // 同上,提供方法參數(shù)
        Object?invokeMethod(Method method, Object?target, Object... args)
        // 取消 Java 權(quán)限檢查。以便后續(xù)執(zhí)行該私有方法
        void?makeAccessible(Method method)
        // 取消 Java 權(quán)限檢查。以便后續(xù)執(zhí)行私有構(gòu)造方法
        void?makeAccessible(Constructor ctor)

        3. 獲取字段

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

        4. 設(shè)置字段

        // 獲取 target 對象的 field 屬性值
        Object?getField(Field field, Object?target)
        // 設(shè)置 target 對象的 field 屬性值,值為 value
        void?setField(Field field, Object?target, Object?value)
        // 同類對象屬性對等賦值
        void?shallowCopyFieldState(Object?src, Object?dest)
        // 取消 Java 的權(quán)限控制檢查。以便后續(xù)讀寫該私有屬性
        void?makeAccessible(Field field)
        // 對類的每個屬性執(zhí)行 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
        1. 判斷代理類型
        // 判斷是不是 Spring 代理對象
        boolean?isAopProxy()
        // 判斷是不是 jdk 動態(tài)代理對象
        isJdkDynamicProxy()
        // 判斷是不是 CGLIB 代理對象
        boolean?isCglibProxy()

        2. 獲取被代理對象的 class

        //?獲取被代理的目標(biāo) class
        Class getTargetClass()

        AopContext

        1. 獲取當(dāng)前對象的代理對象
        Object?currentProxy()


        文章來源:https://juejin.cn/post/7043403364020781064


        到此文章就結(jié)束了。Java架構(gòu)師必看一個集公眾號、小程序、網(wǎng)站(3合1的文章平臺,給您架構(gòu)路上一臂之力,javajgs.com)。如果今天的文章對你在進階架構(gòu)師的路上有新的啟發(fā)和進步,歡迎轉(zhuǎn)發(fā)給更多人。歡迎加入架構(gòu)師社區(qū)技術(shù)交流群,眾多大咖帶你進階架構(gòu)師,在后臺回復(fù)“加群”即可入群。



        這些年小編給你分享過的干貨


        1.idea永久激活碼(親測可用)

        2.優(yōu)質(zhì)ERP系統(tǒng)帶進銷存財務(wù)生產(chǎn)功能(附源碼)

        3.優(yōu)質(zhì)SpringBoot帶工作流管理項目(附源碼)

        4.最好用的OA系統(tǒng),拿來即用(附源碼)

        5.SBoot+Vue外賣系統(tǒng)前后端都有(附源碼

        6.SBoot+Vue可視化大屏拖拽項目(附源碼)



        轉(zhuǎn)發(fā)在看就是最大的支持??

        瀏覽 50
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩电影网站 | 男生女生搞黄 | 色婷婷国产亚洲精品色窝窝 | 日本午夜激情视频 | www啪啪啪 | 泰国同性男男gayxxxxx | 颜值美女操逼 | 国模大尺度一区二区三区 | 小受被用各种姿势进入np唐棠 | 豆花无码AV在线 |