最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

推薦兩款java開(kāi)發(fā)實(shí)用工具 hutool 和 lombok

 更新時(shí)間:2021年04月23日 09:48:39   作者:、wook  
通過(guò)本文給大家推薦兩款java開(kāi)發(fā)實(shí)用工具 hutool 和 lombok,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧

一.hutool工具

摘抄一段hutool工具的簡(jiǎn)介:

Hutool是一個(gè)小而全的Java工具類庫(kù),通過(guò)靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,是項(xiàng)目中“util”包友好的替代,它節(jié)省了開(kāi)發(fā)人員對(duì)項(xiàng)目中公用類和公用工具方法的封裝時(shí)間,使開(kāi)發(fā)專注于業(yè)務(wù)。

  • hutool-aop JDK動(dòng)態(tài)代理封裝,提供非IOC下的切面支持
  • hutool-bloomFilter 布隆過(guò)濾,提供一些Hash算法的布隆過(guò)濾
  • hutool-cache 簡(jiǎn)單緩存實(shí)現(xiàn)
  • hutool-core 核心,包括Bean操作、日期、各種Util等
  • hutool-cron 定時(shí)任務(wù)模塊,提供類Crontab表達(dá)式的定時(shí)任務(wù)
  • hutool-crypto 加密解密模塊,提供對(duì)稱、非對(duì)稱和摘要算法封裝
  • hutool-db JDBC封裝后的數(shù)據(jù)操作,基于ActiveRecord思想
  • hutool-dfa 基于DFA模型的多關(guān)鍵字查找
  • hutool-extra 擴(kuò)展模塊,對(duì)第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)
  • hutool-http 基于HttpUrlConnection的Http客戶端封裝
  • hutool-log 自動(dòng)識(shí)別日志實(shí)現(xiàn)的日志門面
  • hutool-script 腳本執(zhí)行封裝,例如Javascript
  • hutool-setting 功能更強(qiáng)大的Setting配置文件和Properties封裝
  • hutool-system 系統(tǒng)參數(shù)調(diào)用封裝(JVM信息等)
  • hutool-json JSON實(shí)現(xiàn)
  • hutool-captcha 圖片驗(yàn)證碼實(shí)現(xiàn)
  • hutool-poi 針對(duì)POI中Excel和Word的封裝
  • hutool-socket 基于Java的NIO和AIO的Socket封裝

從上面我們也可看出,hutool的工具類十分豐富,個(gè)人感覺(jué)已涵蓋絕大多數(shù)中小公司80%的業(yè)務(wù),提升代碼效率不在話下。

安裝使用:

hutool官方文檔

在maven項(xiàng)目的pom.xml的dependencies中加入以下內(nèi)容:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.3</version>
</dependency>

ps:上面相當(dāng)于引入了hutool所有的工具類,我們也可以單獨(dú)引入需要的包

使用案例:

package com.example.demo;

import cn.hutool.json.JSONUtil;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class User {
    private String userEmail;

    private String userName;

    private List<UserExample> userExampleList;
}
@Data
class UserExample {
    protected String orderByClause;

    protected boolean distinct;

    public static void main(String[] args) {
        User user = getUser();
        String jsonStr = JSONUtil.toJsonStr(user);
        System.out.println("==============json數(shù)據(jù)格式==============");
        System.out.println(jsonStr);

        Object obj1 = JSONUtil.getByPath(JSONUtil.parse(user), "userName");
        System.out.println("========================================");
        System.out.println("通過(guò)hutool獲取User對(duì)象的屬性u(píng)serName值");
        System.out.println(obj1);

        Object obj2 = JSONUtil.getByPath(JSONUtil.parse(user), "userExampleList[1].orderByClause");
        System.out.println("========================================");
        System.out.println("通過(guò)hutool獲取User對(duì)象的屬性List<UserExample>中第二個(gè)對(duì)象的orderByClause值");
        System.out.println(obj2);
    }

    /**
     * 初始化測(cè)試數(shù)據(jù)
     * @return
     */
    private static User getUser() {
        User user = new User();
        user.setUserName("wook");
        user.setUserEmail("xxxx@qq.com");
        //設(shè)置一個(gè)UserExample的集合,方便看demo效果
        List<UserExample> list = new ArrayList<>();
        UserExample userExample = new UserExample();
        userExample.setDistinct(true);
        userExample.setOrderByClause("小吳測(cè)試1");
        UserExample userExample2 = new UserExample();
        userExample2.setDistinct(false);
        userExample2.setOrderByClause("小吳測(cè)試2");
        list.add(userExample);
        list.add(userExample2);
        user.setUserExampleList(list);
        return user;
    }
}

運(yùn)行結(jié)果:

==============json數(shù)據(jù)格式==============
{"userName":"wook","userExampleList":[{"distinct":true,"orderByClause":"小吳測(cè)試1"},{"distinct":false,"orderByClause":"小吳測(cè)試2"}],"userEmail":"xxxx@qq.com"}
========================================
通過(guò)hutool獲取User對(duì)象的屬性u(píng)serName值
wook
========================================
通過(guò)hutool獲取User對(duì)象的屬性List<UserExample>中第二個(gè)對(duì)象的orderByClause值
小吳測(cè)試2

從運(yùn)行結(jié)果可知,JSONUtil.getByPath()方法需要傳2個(gè)參數(shù),第1個(gè)是我們的json對(duì)象,第2個(gè)是表達(dá)式(寫法類似于我們?cè)趈s中,直接操作集合 list[0].propertyName),更多的功能本文章不再列舉~
ps:hutool的源碼中有很多值得我們學(xué)習(xí)的地方,方便自己的同時(shí),更要虛心學(xué)習(xí)。

二:lombok


簡(jiǎn)介

lombok注解在java進(jìn)行編譯時(shí)進(jìn)行代碼的構(gòu)建,對(duì)于java對(duì)象的創(chuàng)建工作它可以更優(yōu)雅,不需要寫多余的重復(fù)的代碼。(lombok一直是個(gè)有爭(zhēng)議的產(chǎn)品,此處不做評(píng)論)

常用注解

@Getter或@Setter
用在屬性上,我們就可以不必寫getter和setter方法了

@ToString
用在類上,可以自動(dòng)復(fù)寫toString方法

@EqualsAndHashCode
用在類上,可以自動(dòng)生成equals和hashCode方法

@AllArgsConstructor
用在類上,自動(dòng)生成無(wú)參構(gòu)造和使用所有有參構(gòu)造函數(shù)

@Data
用在類上,(最常用)相當(dāng)于同時(shí)使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和 @RequiredArgsConstrutor這些注解

@Builder
用在類上,構(gòu)造者模式,案例在后面

@Slf4j
用在類上,能幫助我們直接在方法使用log.info

安裝使用:

File --> Setting --> plugins --> lombok

在這里插入圖片描述

2.在maven項(xiàng)目的pom.xml的dependencies中加入以下內(nèi)容:

<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.10</version>
  </dependency>

使用案例:

@Date在上面hutool使用案例已經(jīng)體現(xiàn),此處只演示@Builder及@Slf4j的功能

@Data
@Builder
@Slf4j
 class BuilderExample {
    private String name;
    private int age;
    public static void main(String[] args) {
        BuilderExample builderExample = BuilderExample.builder().age(11).name("wook").build();
        log.info(JSONUtil.toJsonStr(builderExample));
    }
}

運(yùn)行結(jié)果:

21:57:03.702 [main] INFO com.example.demo.controller.BuilderExample - {"name":"wook","age":11}

到此這篇關(guān)于推薦兩款java開(kāi)發(fā)實(shí)用工具 hutool 和 lombok的文章就介紹到這了,更多相關(guān)java開(kāi)發(fā)工具 hutool 和 lombok內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SparkSQL讀取hive數(shù)據(jù)本地idea運(yùn)行的方法詳解

    SparkSQL讀取hive數(shù)據(jù)本地idea運(yùn)行的方法詳解

    這篇文章主要介紹了SparkSQL讀取hive數(shù)據(jù)本地idea運(yùn)行的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java正則多字符串匹配替換

    Java正則多字符串匹配替換

    正則表達(dá)式異常強(qiáng)大,一直理解不深,用的也不深,這次項(xiàng)目中嘗試,體會(huì)到了它的強(qiáng)大之處。字符串查找,匹配,替換,正則無(wú)不能做,特別是靈活的運(yùn)用子串匹配得到的變量值$1,$2,再進(jìn)行二次處理能夠達(dá)到很巧妙的效果。
    2013-02-02
  • Java對(duì)象布局(JOL)實(shí)現(xiàn)過(guò)程解析

    Java對(duì)象布局(JOL)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Java對(duì)象布局(JOL)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 一起來(lái)學(xué)習(xí)JAVA的運(yùn)算符

    一起來(lái)學(xué)習(xí)JAVA的運(yùn)算符

    這篇文章主要為大家詳細(xì)介紹了JAVA的運(yùn)算符,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • java動(dòng)態(tài)代理示例分享

    java動(dòng)態(tài)代理示例分享

    這篇文章主要介紹了java動(dòng)態(tài)代理示例,需要的朋友可以參考下
    2014-02-02
  • MyBatis中的連接池及事物控制配置過(guò)程

    MyBatis中的連接池及事物控制配置過(guò)程

    連接池就是用于存儲(chǔ)數(shù)據(jù)庫(kù)連接的一個(gè)容器,容器其實(shí)就是一個(gè)集合對(duì)象,本文給大家介紹MyBatis中的連接池以及事物控制的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-05-05
  • Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    本文給大家分享的是使用java實(shí)現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-03-03
  • Spring Boot 自定義數(shù)據(jù)源DruidDataSource代碼

    Spring Boot 自定義數(shù)據(jù)源DruidDataSource代碼

    這篇文章主要介紹了Spring Boot 自定義數(shù)據(jù)源DruidDataSource代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解Springboot快速搭建跨域API接口的步驟(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin)

    詳解Springboot快速搭建跨域API接口的步驟(idea社區(qū)版2023.1.4+apache-maven-3.9.

    這篇文章主要介紹了Springboot快速搭建跨域API接口(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java兩種方法計(jì)算出階乘尾部連續(xù)0的個(gè)數(shù)

    Java兩種方法計(jì)算出階乘尾部連續(xù)0的個(gè)數(shù)

    這篇文章主要介紹了Java兩種方法計(jì)算出階乘尾部連續(xù)0的個(gè)數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

广东省| 子长县| 乌拉特中旗| 德令哈市| 新营市| 水富县| 岢岚县| 获嘉县| 普兰县| 大同县| 将乐县| 察雅县| 鸡泽县| 乡宁县| 黄石市| 隆安县| 商南县| 萨迦县| 茌平县| 孝昌县| 石楼县| 会理县| 兴仁县| 红原县| 辽阳市| 河间市| 应用必备| 望都县| 军事| 乐东| 陕西省| 德令哈市| 西峡县| 晋江市| 县级市| 册亨县| 浦江县| 盐山县| 汪清县| 正宁县| 建始县|