Java开发中经常使用jar包整理及使用

本文整理了我本身在Java开发中经常使用的jar包以及经常使用的API记录。html

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

common-lang3

简介

一个如今最为经常使用的jar包,封装了许多经常使用的工具包java

在线API
依赖:git

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>

主要常见的类以下:web

  • 数组工具类 ArrayUtils
  • 日期工具类 DateUtils DateFormatUtils
  • 字符串工具类 StringUtils
  • 数字工具类 NumberUtils
  • 布尔工具类 BooleanUtils
  • 反射相关工具类 FieldUtils、MethodUtils、MemberUtils、TypeUtils、ConstructorUtils
  • 对象工具类 ObjectUtils
  • 序列化工具类 SerializationUtils

API介绍

这里我只介绍常用的几个工具类及方法,ArrayUtils,StringUtils,NumberUtils,DateUtils,其余的请查看官方API文档吧spring

1.ArrayUtilssql

方法名 说明
add
remove
clone 复制数组
addAll
removeAll 第二个参数传入须要删除的下标(能够指定多个下标)
toObject 把数值(int[],double[])转为包装类(Int[],Double[])
indexOf 在数组按顺序查找,找到第一个知足对应的数值的下标
lastIndexOf 在数组按顺序查找,找到最后一个知足对应的数值的下标
contains 数组是否包含某个值
isEmpty 判断数组是否为空
isNotEmpty 判断数组是否不为空
reverse 数组反转
subarray 指定区间截取数组,区间为半开区间,不包含末尾
toArray 接收一个多个对象,把这几个对象转为对应类型的数组
toMap 将一个二维数组转为Map

2.NumberUtils数据库

方法名 说明
min 比较三个数,返回最小值 或比较指定的几个数,返回最小值
max 比较三个数,返回最大值 或比较指定的几个数,返回最大值
createInt 从传入的String中建立对应类型的数值,createDouble,createFloat...
toInt 将指定字符串转为Int类型,能够选择指定默认数值,若是字符串为null则返回默认数值,除此以外,还有toDouble,toLong...等转为不一样类型的方法
compare 比较两个同类型数值的大小
isDigits 判断字符串是否只包含数字
isParsable 判断字符串是否可转换为Long,Int等类型
isNumber 判断字符串是否为数值(0x,0X开头等进制数值)

3.DateUtilsapache

方法名 说明
parseDate 将Date对象转为字符串
isSameDay 判断两个Dated对象是否为同一天
isSameDay 判断两个Dated对象是否为同一天
addHour 将指定的Date对象加上指定小时,除此以外,还有addMonth,addDay..等

DateFormatUtils正如其名,是用来把时间转为字符串,这里就再也不多说api

4.StringUtils数组

方法名 说明
join 将指定的数组链接成字符串,并添加指定的分割字符
containOnly 字符串是否只包含某个字符串
substringBefore 截取指定字符串前面的内容
substringAfter 截取指定字符串后面的内容(不包括指定字符串)
substringBetween 截取字符串某区间内容,如substringBetween("abcde","a","e")="bcd"
difference 比较两个字符串,返回两个字符串不一样的内容,具体能够看API文档给出的示例
isBlank 判断字符串是否为空白,null,""," "这三个结果都是为true
isEmpty 判断字符串是否为空(只要不为null,或传入的String对象的长度不为0即为true)
countMatches 判断指定的字符串在某个字符串中出现的次数
deleteWhitespace 删除字符串中的空格
defaultIfBlank 若是字符串为空白,则返回一个指定的默认值(null或某个String)
defaultIfEmpty 若是字符串为空,则返回一个指定的默认值(null或某个String)
capitalize 将指定字符串首字母大写
abbreviate 将指定字符串的后面三位转为...
swapCase 将字符串中的字母大小写反转,如aBc变为AbC
lowerCase 将字符串的字母所有转为小写
upperCase 将字符串的字母所有转为大写
left 取字符串左边几个字符,如left("hello",3)="hel",right与此相反
leftPad 字符串的长度不够,则使用指定字符填充指定字符串,如leftPad("hel",5,"z")="zzhel",rightPad方法与此相反
prependIfMissing 指定字符串不以某段字符串开头,则自动添加开头,如prependIfMissing("hello","li")="lihello"
prependIfMissing 指定字符串不以某段字符串开头(忽略大小写),则自动添加开头
getCommonPrefix 得到多个字符串相同的开头内容,接收参数为多个字符串
removeEnd 删除字符串中结尾(知足是以某段内容结尾),如removeEnd("hello","llo")="he"
removeEndIgnoreCase 与上面同样,忽略大小写
removeStart 与上面的相反
remove 删除字符串中的指定内容,如remove("hello","l")="heo"
removeIgnoreCase 删除字符串中的指定内容,如remove("hello","l")="heo"
strip 清除字符串开头和末尾指定的字符(第二个参数为null,用来清除字符串开头和末尾的空格),如strip(" abcxy","xy")=" abc",strip(" abcxy","yx")=" abc"
stripStart 清除字符串开头指定字符
stripEnd 清除字符串末尾指定的字符

common-io

简介

经常使用的IO流工具包
在线API

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

API

咱们主要关心的就是Utils后缀的那几个类便可,能够看到,common-io库提供了FileUtils,FileSystemUtils,FileNameUtils,FileFilterUtils,IOUtils

FileUtils

  • 写出文件
  • 读取文件
  • 建立一个有父级文件夹的文件夹
  • 复制文件和文件夹
  • 删除文件和文件夹
  • URL转文件
  • 经过过滤器和扩展名来筛选文件和文件夹
  • 比较文件内容
  • 文件最后修改时间
  • 文件校验

FileSystemUtils

关于文件系统的相关操做,如查看C盘的大小,剩余大小等操做

IOUtils

字面意思,是封装了IO流的各类操做的工具类

Log4j

简介

Log4J 是 Apache 的一个开源项目,经过在项目中使用 Log4J,咱们能够控制日志信息输出到控制台、文件、GUI 组件、甚至是数据库中。

咱们能够控制每一条日志的输出格式,经过定义日志的输出级别,能够更灵活的控制日志的输出过程,方便项目的调试。

依赖:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

结构

Log4J 主要由 Loggers (日志记录器)、Appenders(输出端)和 Layout(日志格式化器)组成。

其中Loggers 控制日志的输出级别与日志是否输出;
Appenders 指定日志的输出方式(输出到控制台、文件等);
Layout 控制日志信息的输出格式。

日志级别:

级别 说明
OFF 最高日志级别,关闭左右日志
FATAL 将会致使应用程序退出的错误
ERROR 发生错误事件,但仍不影响系统的继续运行
WARN 警告,即潜在的错误情形
INFO 通常和在粗粒度级别上,强调应用程序的运行全程
DEBUG 通常用于细粒度级别上,对调试应用程序很是有帮助
ALL 最低等级,打开全部日志记录

咱们主要使用这四个:Error>Warn>Info>Debug

使用

咱们可使用两种方式来运行Log4j,一种是java代码方式,另一种则是配置文件方式

例子(Java方式)

public class Log4JTest {
    public static void main(String[] args) {   
        //获取Logger对象的实例(传入当前类)         
        Logger logger = Logger.getLogger(Log4JTest.class);
        //使用默认的配置信息,不须要写log4j.properties
        BasicConfigurator.configure();
        //设置日志输出级别为WARN,这将覆盖配置文件中设置的级别,只有日志级别低于WARN的日志才输出
        logger.setLevel(Level.WARN);
        logger.debug("这是debug");
        logger.info("这是info");
        logger.warn("这是warn");
        logger.error("这是error");
        logger.fatal("这是fatal");
    }
}

例子(配置文件方式)

上面的例子,咱们想要实现打印Log,可是每次都要写一遍,浪费时间和精力,因此,Log4j提供了另一种方式来配置好咱们的信息

建立一个名为log4j.properties的文件,此文件须要放在项目的根目录(约定),若是是maven项目,直接放在resources文件夹中便可

log4j.properties

#控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

#log jdbc
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=WARN
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

#log mybatis设置
#log4j.logger.org.apache.ibatis=DEBUG
log4j.logger.org.apache.ibatis.jdbc=error
log4j.logger.org.apache.ibatis.io=info
log4j.logger.org.apache.ibatis.datasource=info

#springMVC日志
log4j.logger.org.springframework.web=WARN

# 文件输出配置
log4j.appender.A = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File = D:/log.txt #指定日志的输出路径
log4j.appender.A.Append = true
log4j.appender.A.Threshold = DEBUG
log4j.appender.A.layout = org.apache.log4j.PatternLayout #使用自定义日志格式化器
log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n #指定日志的输出格式
log4j.appender.A.encoding=UTF-8 #指定日志的文件编码

#指定日志的输出级别与输出端
log4j.rootLogger=DEBUG,Console,A

#指定某个包名日志级别(不能超过上面定义的级别,不然日志不会输出)
log4j.logger.com.wan=DEBUG

以后使用的话就比较简单了

//Logger的初始化(这个推荐定义为全局变量,方便使用)
Logger logger = Logger.getLogger(Log4JTest.class);
//输出Log
logger.info("这是info");

参考连接:Log4j入门教程

lombok

简介

日常咱们建立实体类的时候,须要get/set方法,极其麻烦,虽然IDEA等IDE都是有提供了快捷生成,不过,最好的解决方法仍是省略不写

而lombok就是这样的一个框架,实现省略get/set方法,固然,lombok的功能不仅有此,还有equal,toString方法也能够由此框架自动生成

lombok的原理是使用注解,以后就会在编译过程当中,给Class文件自动加上get/set等方法

不过IDEA彷佛没法识别,代码检查仍是会报错,因此,使用IDEA的时候还得安装一个插件,在plugin搜索lombok,以后安装重启便可,如图

以后为Java项目添加依赖

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
    <scope>provided</scope>
</dependency>

使用示例

1.实体类省略get/set
估计Kotlin中的data关键字就是参照着lombok实现的

//这里咱们只须要为类添加Data注解,就会自动生成对应属性的get/set方法,toString,equal等方法
@Data
public class User {
    private String username;
    private String password;
}

2.须要无参构造以及get/set方法

@Getter
@Setter
@NoArgsConstructor
public class User {
    private String username;
    private String password;
}

3.链式调用set方法

@Data
@Accessors(chain = true)
public class User {
    private String username;
    private String password;
}

//使用
User user = new User();
user.setUsername("helo").setPassword("123");

4.参数不为空

//若是调用此方法,就会抱一个空指针错误
public String print(@NotNull String str){
    ...
}

5.只须要toString

@ToString(callSuper=true, includeFieldNames=true)
public class User {
    private String username;
    private String password;
    //省略的get/set方法
}

6.builder模式建立实体类对象

@Data
@Builder
public class User {
    private String username;
    private String password;
}
//使用
User user1 = User.builder().username("user1").password("123").build();

7.工具类

@UtilityClass
public class MyUtils{
    //会将此方法自动转为静态方法
    public void print(String str){
        ...
    }
}
//使用
MyUtils.print("hello");

8.自动关闭流

public static void main(String[] args) throws Exception {
    //使用Cleanup会自动调用close方法
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[1024];
    while (true) {
        int r = in.read(b);
        if (r == -1) break;
        out.write(b, 0, r);
    }
}

9.省略Logger时的初始化

@Log4j
@Log
public class User{
    //会自动添加此语句
    //Logger logger = Logger.getLogger(User.class);
    ...
}

参考:
Lombok介绍、使用方法和总结
Lombok的使用详解

相关文章
相关标签/搜索