亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Apache?Commons?BeanUtils:?JavaBean操作方法

 更新時(shí)間:2023年12月26日 08:32:11   作者:S  
這篇文章主要介紹了Apache?Commons?BeanUtils:?JavaBean操作的藝術(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

第1部分:Apache Commons BeanUtils 簡(jiǎn)介

咱們今天聊聊Apache Commons BeanUtils。這貨簡(jiǎn)直就是處理JavaBean的利器,用起來(lái)又方便又快捷。不管是屬性拷貝、類(lèi)型轉(zhuǎn)換,還是動(dòng)態(tài)訪問(wèn),BeanUtils都能輕松應(yīng)對(duì)。

BeanUtils是啥?

Apache Commons BeanUtils,簡(jiǎn)單來(lái)說(shuō),就是一套Java庫(kù),專(zhuān)門(mén)用來(lái)操作JavaBeans。什么是JavaBeans?嗯,它其實(shí)就是遵循特定規(guī)范的Java類(lèi),比如有無(wú)參構(gòu)造器、屬性私有、公共的getter和setter方法。這些Beans在Java世界里可是處處可見(jiàn),無(wú)論是Web開(kāi)發(fā)還是桌面應(yīng)用,它們都扮演著重要角色。

為啥要用BeanUtils?

小黑告訴你,操作JavaBean雖然不難,但手動(dòng)去寫(xiě)一堆getter和setter,是不是覺(jué)得有點(diǎn)啰嗦?特別是要處理一堆類(lèi)似的操作,比如復(fù)制屬性啊,類(lèi)型轉(zhuǎn)換啊,這時(shí)候,BeanUtils就閃亮登場(chǎng)了。它能讓這些操作變得簡(jiǎn)單快捷,代碼更加整潔,提高開(kāi)發(fā)效率。

怎么用起來(lái)?

先來(lái)看看如何把BeanUtils加入到咱們的項(xiàng)目里。一般來(lái)說(shuō),用Maven或者Gradle這樣的構(gòu)建工具是最方便的。例如,用Maven的話,只需在pom.xml文件里添加如下依賴(lài):

<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.4</version> <!-- 使用最新穩(wěn)定版本 -->
</dependency>

加完這個(gè)依賴(lài)后,咱們就可以在項(xiàng)目中自由使用BeanUtils的各種功能了。

第2部分:核心功能概覽

PropertyUtils:操控屬性的基礎(chǔ)

PropertyUtils主要用來(lái)操作Bean的屬性。比如說(shuō),咱們可以通過(guò)它來(lái)獲取或設(shè)置屬性的值。它更像是BeanUtils的基石,為BeanUtils提供了基本的屬性操作功能。

BeanUtils:PropertyUtils的超級(jí)版

如果說(shuō)PropertyUtils是基礎(chǔ)版,那BeanUtils就是加強(qiáng)版。它在PropertyUtils的基礎(chǔ)上增加了很多實(shí)用的功能,比如屬性的復(fù)制。這可是在實(shí)際開(kāi)發(fā)中超級(jí)常用的。

ConvertUtils:類(lèi)型轉(zhuǎn)換的神器

在處理JavaBean的時(shí)候,經(jīng)常會(huì)遇到屬性類(lèi)型轉(zhuǎn)換的需求。這時(shí)候,ConvertUtils就能派上用場(chǎng)了。它能自動(dòng)幫咱們處理各種類(lèi)型之間的轉(zhuǎn)換,省心省力。

代碼示例:基本使用

來(lái),咱們看個(gè)簡(jiǎn)單的例子。假設(shè)有個(gè)人物類(lèi)(Person),小黑用BeanUtils給它設(shè)置屬性。

import org.apache.commons.beanutils.BeanUtils;
public class Demo {
    public static void main(String[] args) {
        Person person = new Person();
        try {
            // 使用BeanUtils設(shè)置屬性
            BeanUtils.setProperty(person, "name", "張三");
            BeanUtils.setProperty(person, "age", 30);
            // 獲取并打印屬性
            String name = BeanUtils.getProperty(person, "name");
            String age = BeanUtils.getProperty(person, "age");
            System.out.println("姓名: " + name + ", 年齡: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class Person {
    private String name;
    private int age;
    // 省略getter和setter方法
}

在這個(gè)例子中,咱們用BeanUtils給Person類(lèi)的name和age屬性賦值,然后又獲取這些值并打印出來(lái)。

第3部分:深入PropertyUtils

PropertyUtils的核心功能

PropertyUtils主要提供了讀取和設(shè)置JavaBean屬性的功能。這聽(tīng)起來(lái)很基礎(chǔ),但在實(shí)際開(kāi)發(fā)中卻非常有用。舉個(gè)例子,如果咱們需要從一個(gè)對(duì)象中讀取某個(gè)屬性的值,或者要把值設(shè)置到對(duì)象的某個(gè)屬性上,用PropertyUtils就能輕松搞定。

讀取屬性:獲取的藝術(shù)

咱們來(lái)看看如何使用PropertyUtils讀取屬性值。假設(shè)有個(gè)User類(lèi),有nameage這兩個(gè)屬性,小黑現(xiàn)在要讀取這些屬性的值。

import org.apache.commons.beanutils.PropertyUtils;
public class PropertyUtilsDemo {
    public static void main(String[] args) {
        User user = new User();
        user.setName("李雷");
        user.setAge(25);
        try {
            // 讀取屬性值
            String name = (String) PropertyUtils.getProperty(user, "name");
            Integer age = (Integer) PropertyUtils.getProperty(user, "age");
            System.out.println("姓名: " + name + ", 年齡: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class User {
    private String name;
    private int age;
    // 省略getter和setter方法
}

在這個(gè)例子中,小黑通過(guò)PropertyUtils.getProperty方法輕松獲取了User對(duì)象的nameage屬性值。

設(shè)置屬性:賦值的智慧

接下來(lái),如果咱們想要設(shè)置對(duì)象的屬性值,PropertyUtils同樣能派上用場(chǎng)。比如小黑現(xiàn)在要把Username改成“韓梅梅”,age改成30。

public class PropertyUtilsDemo {
    public static void main(String[] args) {
        User user = new User();

        try {
            // 設(shè)置屬性值
            PropertyUtils.setProperty(user, "name", "韓梅梅");
            PropertyUtils.setProperty(user, "age", 30);

            // 驗(yàn)證結(jié)果
            System.out.println("姓名: " + user.getName() + ", 年齡: " + user.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // User類(lèi)和前面一樣,這里就不重復(fù)了
}

在這個(gè)例子里,小黑用PropertyUtils.setProperty方法給User對(duì)象的屬性賦了新值,然后打印出來(lái),確保一切正常。

動(dòng)態(tài)屬性操作:靈活性的體現(xiàn)

PropertyUtils的魔力還不止于此。它還支持動(dòng)態(tài)屬性操作,這意味著咱們可以在運(yùn)行時(shí)動(dòng)態(tài)地讀取和設(shè)置屬性,而不必在編碼時(shí)就確定屬性名。這在處理動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)時(shí)特別有用。

import java.util.HashMap;
import java.util.Map;

public class DynamicPropertyDemo {
    public static void main(String[] args) {
        Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();
        map.put("username", "小明");
        map.put("age", 20);

        try {
            // 動(dòng)態(tài)讀取屬性
            String username = (String) PropertyUtils.getProperty(map, "username");
            Integer age = (Integer) PropertyUtils.getProperty(map, "age");
            System.out.println("用戶(hù)名: " + username + ", 年齡: " + age);

            // 動(dòng)態(tài)設(shè)置屬性
            PropertyUtils.setProperty(map, "age", 21);
            System.out.println("更新后年齡: " + map.get("age"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在這個(gè)例子中,小黑創(chuàng)建了一個(gè)Map,然后用PropertyUtils來(lái)動(dòng)態(tài)地處理這個(gè)Map中的數(shù)據(jù)。這樣的靈活性在處理JSON數(shù)據(jù)或者動(dòng)態(tài)表單數(shù)據(jù)時(shí)特別有優(yōu)勢(shì)。

第4部分:BeanUtils的高級(jí)應(yīng)用

現(xiàn)在小黑要和大家探討的是BeanUtils的一些高級(jí)應(yīng)用,特別是屬性復(fù)制和動(dòng)態(tài)Bean操作。這些功能在實(shí)際開(kāi)發(fā)中非常有用,可以讓代碼更加簡(jiǎn)潔和高效。

屬性復(fù)制:簡(jiǎn)化數(shù)據(jù)遷移

屬性復(fù)制是BeanUtils的一大亮點(diǎn)。在實(shí)際開(kāi)發(fā)中,經(jīng)常會(huì)遇到從一個(gè)對(duì)象復(fù)制屬性到另一個(gè)對(duì)象的場(chǎng)景,尤其是在處理類(lèi)似DTO(數(shù)據(jù)傳輸對(duì)象)和Entity(實(shí)體)轉(zhuǎn)換的時(shí)候。如果手動(dòng)一個(gè)屬性一個(gè)屬性地復(fù)制,既麻煩又容易出錯(cuò)。這時(shí)候,BeanUtils的copyProperties方法就能大顯身手了。

看看小黑怎么用這個(gè)功能:

import org.apache.commons.beanutils.BeanUtils;
public class CopyPropertiesDemo {
    public static void main(String[] args) {
        UserDTO userDTO = new UserDTO("王小明", 28);
        UserEntity userEntity = new UserEntity();
        try {
            // 從DTO復(fù)制到實(shí)體
            BeanUtils.copyProperties(userEntity, userDTO);
            // 驗(yàn)證結(jié)果
            System.out.println("用戶(hù)實(shí)體:姓名 - " + userEntity.getName() + ", 年齡 - " + userEntity.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class UserDTO {
    private String name;
    private int age;
    UserDTO(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // 省略getter和setter方法
}
class UserEntity {
    private String name;
    private int age;
    // 省略getter和setter方法
}

在這個(gè)例子中,小黑從一個(gè)UserDTO對(duì)象復(fù)制屬性到UserEntity對(duì)象。這樣一來(lái),所有的屬性就自動(dòng)從DTO轉(zhuǎn)移到實(shí)體上了,省時(shí)省力。

動(dòng)態(tài)Bean操作:更多的可能性

動(dòng)態(tài)Bean操作是BeanUtils中另一個(gè)很酷的功能。它允許咱們?cè)谶\(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建和操作Bean,這在處理不確定的數(shù)據(jù)結(jié)構(gòu)或者動(dòng)態(tài)生成對(duì)象的場(chǎng)景下特別有用。

import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaClass;
import org.apache.commons.beanutils.LazyDynaBean;
import org.apache.commons.beanutils.LazyDynaClass;
public class DynamicBeanDemo {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè)動(dòng)態(tài)Bean
        DynaClass dynaClass = new LazyDynaClass();
        DynaBean dynaBean = new LazyDynaBean(dynaClass);
        try {
            // 動(dòng)態(tài)添加屬性
            dynaBean.set("name", "李華");
            dynaBean.set("age", 30);
            // 讀取屬性值
            String name = (String) dynaBean.get("name");
            Integer age = (Integer) dynaBean.get("age");
            System.out.println("動(dòng)態(tài)Bean:姓名 - " + name + ", 年齡 - " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在這個(gè)例子里,小黑創(chuàng)建了一個(gè)動(dòng)態(tài)Bean,然后給它添加了nameage兩個(gè)屬性。這種方式的靈活性非常高,可以根據(jù)需要?jiǎng)討B(tài)定義和操作對(duì)象的屬性。

第5部分:ConvertUtils的威力

ConvertUtils,這個(gè)小玩意兒主要負(fù)責(zé)類(lèi)型轉(zhuǎn)換,特別是在處理JavaBean的屬性時(shí),經(jīng)常會(huì)遇到需要把一種類(lèi)型轉(zhuǎn)換成另一種類(lèi)型的情況。ConvertUtils就是用來(lái)解決這類(lèi)問(wèn)題的。

類(lèi)型轉(zhuǎn)換:簡(jiǎn)化而高效

在Java開(kāi)發(fā)中,類(lèi)型轉(zhuǎn)換無(wú)處不在。比如從字符串轉(zhuǎn)換成整數(shù),或者從整數(shù)轉(zhuǎn)換成布爾值等等。這些操作聽(tīng)起來(lái)簡(jiǎn)單,但如果每次都手動(dòng)寫(xiě)轉(zhuǎn)換代碼,不僅麻煩,而且容易出錯(cuò)。ConvertUtils提供了一種統(tǒng)一的解決方案,可以自動(dòng)完成這些轉(zhuǎn)換,簡(jiǎn)化開(kāi)發(fā)流程。

使用ConvertUtils進(jìn)行基本轉(zhuǎn)換

來(lái)看看ConvertUtils的基本使用方法。假設(shè)小黑現(xiàn)在有個(gè)字符串表示的年齡,需要把它轉(zhuǎn)換成整數(shù)類(lèi)型。

import org.apache.commons.beanutils.ConvertUtils;
public class ConvertUtilsDemo {
    public static void main(String[] args) {
        // 字符串轉(zhuǎn)換為整數(shù)
        String ageStr = "25";
        Integer age = (Integer) ConvertUtils.convert(ageStr, Integer.class);
        System.out.println("轉(zhuǎn)換后的年齡: " + age);
    }
}

在這個(gè)例子中,小黑使用了ConvertUtils的convert方法,輕松地把字符串"25"轉(zhuǎn)換成了整數(shù)。

自定義類(lèi)型轉(zhuǎn)換器

但ConvertUtils的真正魅力在于它的可擴(kuò)展性。如果咱們需要處理一些特殊的轉(zhuǎn)換,比如把字符串轉(zhuǎn)換成日期類(lèi)型,或者把數(shù)字轉(zhuǎn)換成自定義的枚舉類(lèi)型,這時(shí)就可以自定義轉(zhuǎn)換器。

import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateTimeConverter;
public class CustomConverterDemo {
    public static void main(String[] args) {
        // 自定義轉(zhuǎn)換器:字符串轉(zhuǎn)日期
        DateTimeConverter dtConverter = new DateTimeConverter() {
            @Override
            protected Class<?> getDefaultType() {
                return java.util.Date.class;
            }
        };
        ConvertUtils.register(dtConverter, java.util.Date.class);
        // 使用自定義轉(zhuǎn)換器
        String dateStr = "2023-12-25";
        java.util.Date date = (java.util.Date) ConvertUtils.convert(dateStr, java.util.Date.class);
        System.out.println("轉(zhuǎn)換后的日期: " + date);
    }
}

在這個(gè)例子里,小黑注冊(cè)了一個(gè)自定義的日期轉(zhuǎn)換器,用來(lái)把字符串轉(zhuǎn)換成java.util.Date類(lèi)型。這樣的自定義轉(zhuǎn)換器讓ConvertUtils的功能更加強(qiáng)大和靈活。

綜合案例:處理復(fù)雜轉(zhuǎn)換

實(shí)際開(kāi)發(fā)中,咱們可能會(huì)遇到更復(fù)雜的轉(zhuǎn)換需求。比如,有一個(gè)用戶(hù)信息的字符串,里面包含了姓名、年齡和生日,咱們需要把這些信息提取出來(lái),轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類(lèi)型。

public class ComplexConversionDemo {
    public static void main(String[] args) {
        // 假設(shè)有這樣一個(gè)用戶(hù)信息字符串
        String userInfo = "張三,30,1993-04-15";
        // 分割字符串
        String[] parts = userInfo.split(",");
        // 轉(zhuǎn)換各個(gè)部分
        String name = parts[0];
        Integer age = (Integer) ConvertUtils.convert(parts[1], Integer.class);
        java.util.Date birthday = (java.util.Date) ConvertUtils.convert(parts[2], java.util.Date.class);
        // 輸出結(jié)果
        System.out.println("姓名: " + name + ", 年齡: " + age + ", 生日: " + birthday);
    }
}

在這個(gè)例子中,小黑處理了一個(gè)包含多種數(shù)據(jù)類(lèi)型的字符串,并且使用ConvertUtils輕松完成了類(lèi)型轉(zhuǎn)換。

第6部分:性能分析

性能

雖然BeanUtils提供了很多便利的功能,但這些功能的背后可能會(huì)有一定的性能代價(jià)。例如,在復(fù)制大量屬性或頻繁操作Bean時(shí),性能問(wèn)題可能會(huì)浮現(xiàn)。這不是說(shuō)BeanUtils性能差,而是任何便捷的功能都可能有性能成本,了解這一點(diǎn)對(duì)于寫(xiě)出高效的代碼很重要。

BeanUtils的性能分析

BeanUtils在進(jìn)行屬性復(fù)制或類(lèi)型轉(zhuǎn)換時(shí),會(huì)使用反射機(jī)制。反射機(jī)制雖然提供了極大的靈活性,但與直接訪問(wèn)屬性相比,它在性能上通常會(huì)慢一些。這是因?yàn)榉瓷湫枰谶\(yùn)行時(shí)解析類(lèi)的元數(shù)據(jù),這個(gè)過(guò)程比直接執(zhí)行編譯過(guò)的Java代碼要慢。

實(shí)際應(yīng)用中的考量

  • 數(shù)據(jù)量和頻率:在處理小量數(shù)據(jù)或不頻繁的操作時(shí),BeanUtils帶來(lái)的性能影響可以忽略不計(jì)。但在大批量數(shù)據(jù)處理或高頻調(diào)用場(chǎng)景下,性能差異可能變得顯著。
  • 功能與性能的平衡:在選擇使用BeanUtils時(shí),需要權(quán)衡其提供的便利性和可能的性能代價(jià)。如果性能是關(guān)鍵因素,可能需要考慮替代方案或優(yōu)化代碼。

第7部分:最佳實(shí)踐和常見(jiàn)錯(cuò)誤

最佳實(shí)踐

  • 合理使用反射:BeanUtils依賴(lài)于反射來(lái)操作JavaBean的屬性。雖然反射很強(qiáng)大,但也不是萬(wàn)能的。在性能敏感的場(chǎng)景下,考慮直接使用getter和setter方法。
  • 避免過(guò)度依賴(lài):雖然BeanUtils可以簡(jiǎn)化很多操作,但并不意味著所有屬性操作都應(yīng)該通過(guò)它來(lái)完成。評(píng)估每種情況,如果手動(dòng)操作更簡(jiǎn)單明了,就沒(méi)必要強(qiáng)行使用BeanUtils。
  • 處理異常:BeanUtils的方法可能會(huì)拋出異常。妥善處理這些異常,不僅可以避免程序崩潰,還能幫助定位問(wèn)題。
  • 自定義轉(zhuǎn)換器的使用:當(dāng)遇到BeanUtils內(nèi)置轉(zhuǎn)換器無(wú)法滿足需求時(shí),可以自定義轉(zhuǎn)換器。但要確保自定義轉(zhuǎn)換器的正確性和效率。
  • 利用緩存提高性能:如果在高頻率操作的場(chǎng)景中使用BeanUtils,考慮使用緩存機(jī)制來(lái)存儲(chǔ)反射結(jié)果,以提高性能。

常見(jiàn)錯(cuò)誤

  • 忽略了null值的處理:在復(fù)制屬性時(shí),BeanUtils會(huì)將源對(duì)象的null值也復(fù)制過(guò)去。在某些情況下,這可能會(huì)覆蓋目標(biāo)對(duì)象的現(xiàn)有值。要特別注意這一點(diǎn)。
  • 不正確的數(shù)據(jù)類(lèi)型:在使用ConvertUtils進(jìn)行類(lèi)型轉(zhuǎn)換時(shí),如果源數(shù)據(jù)類(lèi)型和目標(biāo)數(shù)據(jù)類(lèi)型不匹配,可能會(huì)導(dǎo)致轉(zhuǎn)換錯(cuò)誤或數(shù)據(jù)丟失。
  • 反射性能問(wèn)題:忽視BeanUtils基于反射的特性可能會(huì)導(dǎo)致性能問(wèn)題,特別是在大數(shù)據(jù)量或高頻率操作的場(chǎng)景中。
  • 異常處理不當(dāng):BeanUtils操作可能會(huì)拋出多種異常。忽略這些異常的正確處理,可能會(huì)導(dǎo)致程序中斷或隱蔽的bug。

總結(jié)

在這篇博客中,我們深入探討了Apache Commons BeanUtils庫(kù),一個(gè)在Java開(kāi)發(fā)中不可或缺的工具。從基本介紹到高級(jí)應(yīng)用,本文全面覆蓋了BeanUtils的核心功能,包括PropertyUtils和ConvertUtils的使用,突出了它們?cè)谔幚鞪avaBean屬性時(shí)的便利性和靈活性。

我們首先概述了BeanUtils的基礎(chǔ)知識(shí),強(qiáng)調(diào)了它在簡(jiǎn)化JavaBean操作中的作用。隨后,詳細(xì)探討了PropertyUtils和BeanUtils的高級(jí)功能,如屬性復(fù)制和動(dòng)態(tài)Bean操作,展示了它們?nèi)绾卧跀?shù)據(jù)轉(zhuǎn)換和處理中提供高效的解決方案。特別是在涉及自定義類(lèi)型轉(zhuǎn)換器和處理復(fù)雜類(lèi)型轉(zhuǎn)換的場(chǎng)景中,BeanUtils顯示出其強(qiáng)大的功能。

以上就是Apache Commons BeanUtils: JavaBean操作的藝術(shù)的詳細(xì)內(nèi)容,更多關(guān)于Apache Commons BeanUtils JavaBean的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Spring容器的使用流程

    詳解Spring容器的使用流程

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Spring容器的使用流程展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • String類(lèi)型傳遞是值傳遞,char[]類(lèi)型傳遞是引用傳遞的實(shí)現(xiàn)

    String類(lèi)型傳遞是值傳遞,char[]類(lèi)型傳遞是引用傳遞的實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇String類(lèi)型傳遞是值傳遞,char[]類(lèi)型傳遞是引用傳遞的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看不
    2016-09-09
  • SpringCloud3.x集成BigQuery的代碼實(shí)現(xiàn)

    SpringCloud3.x集成BigQuery的代碼實(shí)現(xiàn)

    Google BigQuery 是一種高性能、可應(yīng)用于大數(shù)據(jù)分析的公主云數(shù)據(jù)庫(kù)服務(wù),Spring Cloud 提供了完善的工具和核心功能,可以進(jìn)行泛動(dòng)分布應(yīng)用構(gòu)建,本文給大家介紹了SpringCloud3.x集成BigQuery的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2025-01-01
  • Java實(shí)現(xiàn)優(yōu)雅日期處理的方案詳解

    Java實(shí)現(xiàn)優(yōu)雅日期處理的方案詳解

    在我們的日常工作中,需要經(jīng)常處理各種格式,各種類(lèi)似的的日期或者時(shí)間,下面我們就來(lái)看看如何使用java處理這樣的日期問(wèn)題吧,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • java調(diào)用Restful接口的三種方法

    java調(diào)用Restful接口的三種方法

    本文主要介紹了java調(diào)用Restful接口的三種方法,主要包括HttpURLConnection實(shí)現(xiàn),HttpClient實(shí)現(xiàn)和Spring的RestTemplate,具有一定的參考,感興趣的可以了解一下    
    2021-08-08
  • springboot結(jié)合JWT實(shí)現(xiàn)單點(diǎn)登錄的示例

    springboot結(jié)合JWT實(shí)現(xiàn)單點(diǎn)登錄的示例

    本文主要介紹了springboot結(jié)合JWT實(shí)現(xiàn)單點(diǎn)登錄的示例,包括生成Token、驗(yàn)證Token及使用Redis存儲(chǔ)Token,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • 使用JSONObject生成和解析json的方法

    使用JSONObject生成和解析json的方法

    下面小編就為大家?guī)?lái)一篇使用JSONObject生成和解析json的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 在Java中去除字符串末尾的換行符的常用方法小結(jié)

    在Java中去除字符串末尾的換行符的常用方法小結(jié)

    在日常開(kāi)發(fā)中,字符串操作是非常常見(jiàn)的需求,其中去除字符串末尾的換行符(\n)是一個(gè)很有代表性的場(chǎng)景,本文將從 Java 的幾種常用方法著手,全面解析如何去除字符串末尾的換行符,并結(jié)合代碼示例和實(shí)際使用場(chǎng)景,幫助大家掌握這一技巧,需要的朋友可以參考下
    2024-12-12
  • Java子線程調(diào)用RequestContextHolder.getRequestAttributes()方法問(wèn)題詳解

    Java子線程調(diào)用RequestContextHolder.getRequestAttributes()方法問(wèn)題詳解

    這篇文章主要介紹了Java子線程調(diào)用RequestContextHolder.getRequestAttributes()方法問(wèn)題處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • 詳解Spring中的@Scope注解

    詳解Spring中的@Scope注解

    這篇文章主要介紹了詳解Spring中的@Scope注解,@Scope注解是Spring IOC容器中的一個(gè)作用域,在Spring IOC容器中,他用來(lái)配置Bean實(shí)例的作用域?qū)ο?需要的朋友可以參考下
    2023-07-07

最新評(píng)論