Java开发基础工具包

Java常用工具类整合

一、引入依赖

<dependency>
  <groupId>cn.gjing</groupId>
  <artifactId>tools-common</artifactId>
  <version>1.6.5</version>
</dependency>

二、允许跨域:

开启全局允许跨域, 在启动类或者任意类使用@EnableCors注解即可,会走默认配置,也可以自定义配置,配置示例如下:

  • yml方式
tools:
  common:
    cors:
      # 支持的方法类型
      allowed-methods: POST,GET,DELETE,PUT,OPTIONS
      # 支持的请求头
      allowed-headers:
      # 支持的域名
      allowed-origins:
      # 方法路径
      path: /**
      max-age: 1800
  • javaBean方式
/**
 * @author Gjing
 **/
@Configuration
public class CorsConfiguration {
    @Bean
    public CorsBean corsBean() {
        CorsBean corsBean = new CorsBean();
        corsBean.setAllowedMethods(new String[]{"POST"});
        return corsBean;
    }
}

三、结果bean:

1、ResultVO

通用返回结果模板

参数描述
code状态码
message提示信息
data数据

2、PageResult

分页查询返回结果集

参数描述
totalPages总页数
CurrentPage当前页数
totalRows总条数
pageRows每页的条数
data数据

3、ErrorResult

错误返回模板

参数描述
code状态码
message提示信息

四、参数校验工具类:

主要提供参数校验、处理,匹配等等, 使用时通过ParamUtils.xxx()使用,以下为该工具的所有方法介绍 :

1、isEmpty

判断给定参数是否为空,可以是字符串、包装类型、数组、集合等

参数描述
param参数

2、isNotEmpty

判断给定是否不为空,可以是字符串、包装类型、数组、集合等

参数描述
param参数

3、requireNotNull

该参数不能为空,为空抛出NPE,否则返回原值

参数描述
param参数

4、ListHasEmpty

判断集合里是否含有空值

参数描述
list集合

5、multiEmpty

检查多个参数里面是否有空值

参数描述
params多个参数

6、equals

判断两个参数是否相等

参数描述
param1参数1
param2参数2

7、trim

去除字符串的空格

参数描述
str字符串

8、trim

去除集合中的空元素

参数描述
list集合

9、removeSymbol

移除字符串两边的指定符号

参数描述
str字符串
symbol符号

10、removeStartSymbol

移除字符串开始的指定符号

参数描述
str字符串
symbol符号

11、removeEndSymbol

移除字符串末尾的指定符号

参数描述
str字符串
symbol符号

12、split

根据符号截取

参数描述
str字符串
symbol符号

13、removeAllSymbol

移除字符串里的所有指定符号

参数描述
str字符串
symbol符号

14、contains

判断数组里是否包含指定的值

参数描述
arr数组
val

15、isEmail

判断是否为email

参数描述
email字符串

16、isMobileNumber

判断是否是手机号码

参数描述
phone字符串

17、isTelPhone

判断是不是电话号码

参数描述
tel字符串

18、isPostCode

判断是否为邮编

参数描述
postCode字符串

五、时间工具类:

对时间进行操作,使用时通过TimeUtils.xxx()调用,该工具的所有方法介绍如下 :

六、加密工具类

1、EncryptionUtils:

  • EncryptionUtils.encodeMd5():MD5加密
  • EncryptionUtils.encodeBase64():Base64加密
  • EncryptionUtils.decodeBase64():Base64解密

2、ShaUtils:

  • ShaUtils.encodeSha256Hmac():Sha356Hmac加密
  • ShaUtils.sha1Hmac():sha1Hmac加密

3、AesUtils:

  • AesUtils.encode():AES加密
  • AesUtils.decode():AES解密

七、随机数工具类

用于随机生成数字或字符串,使用时通过RandomUtils.xxx()调用,该工具包含的所有方法如下 :

  • RandomUtils.randomInt():获取随机整数,可设置最大值和最小值
  • RandomUtils.getRandom():获取一个Random实例
  • RandomUtils.generateMixString():生成混合指定长度字符串(数字、字母大小写)
  • RandomUtils.generateString():获取指定长度纯字符串(字母大小写)
  • RandomUtils.generateNumber():获取指定长度数字字符串

八、Bean工具类

使用时通过BeanUtils.xxx()调用

1、copyProperties

属性复制,用于将一个对象的属性赋值到另一个对象,两个对象间的参数名和数据类型必须相同
参数说明

参数描述
source源对象
target目标对象
ignores忽略的字段,设置后不会进行复制

2、toBean

将map转为bean对象
参数说明

参数描述
map需要转为Bean的map
beanClass目标Bean的class

3、findMethod

查找类中的方法
参数说明

参数描述
clazz目标类class
methodName方法名
paramTypes方法参数类型

4、findDeclaredMethod

查找类中声明的方法
参数说明

参数描述
clazz目标类class
methodName方法名
paramTypes方法参数类型

5、setFieldValue

给类中的某个字段设置值
参数说明

参数描述
o字段所在的对象
field字段
value

6、getFieldValue

获取某个字段的值
参数说明

参数描述
o字段所在的对象
field字段

7、toMap

将bean对象转为map
参数说明

参数描述
bean需要转为map的bean对象

8、getInterfaceType

获取泛型接口中某个泛型的真实对象class
参数说明

参数描述
source实现泛型接口的类
typeInterface泛型接口
paramIndex泛型参数下标,0开始

9、getGenericType

获取某个泛型字段的真实对象class
参数说明

参数描述
type字段的泛型类型
paramIndex泛型参数下标,0开始

九、唯一ID生成工具类

项目中使用可以将IdUtils注册为一个bean以在其他地方进行依赖注入, 或者将其设置为静态的, 不要出现重复的IdUtils对象, 否则并发情况下会出现重复,
如果要调用snowId, 必须通过带参数的构造方法进行创建实例

1、uuid

获取去除-符号的uuid

public class Test{
    public static void main(String[] args){
      IdUtils idUtils = new IdUtils();
      System.out.println(idUtils.uuid());
    }
}

2、snowId

得到一个唯一的ID,在多服务需要操作同一个数据表的情况下, 需要保证每个服务的centerIdmachineId唯一

public class Test{
    public static void main(String[] args){
      IdUtils idUtils = new IdUtils(1,2);
      for(int i = 0; i < 100; i++) {
        System.out.println(idUtils.snowId());
      }
    }
}

十、邮件工具类

用于发送邮件,支持普通邮件和带附件邮件,支持html格式文本,支持群发和抄送,返回true为发送成功,使用时通过EmailUtils.of()生成实例之后在进行其中的方法,of()方法参数如下 :

参数描述
hostsmtp服务器地址,比如qq邮箱:smtp.qq.com
password发送者邮箱密码,有些邮箱需要用授权码代替密码
from发送人邮箱

该工具包含的所有方法如下 :

1、sendEmail

发送邮件,参数如下:

参数描述
subject主题
body邮件内容,支持HTML
files要发送的附件物理地址,不要可以传null或者空数组
tos收件人邮箱账号,多个使用逗号隔开
copyTo抄送人地址,多个用逗号隔开,不抄送可以传null或者空字符串

完整示例如下 :

public class Test{
    public static void main(String[] args) {
        boolean b = EmailUtil.of("smtp.qq.com", "发送人密码或者授权码", "发送人邮箱")
                .sendEmail("主题", "内容",new String[]{"附件物理地址"},"收件人邮箱地址", "抄送人邮箱地址");
        if (b) {
            System.out.println("发送成功");
        }
    }
}

十一、二维码工具类

二维码工具类, 包含的所有方法如下 :

1、create()

根据文本内容,自定义宽度高度,自定义图片格式,自定义配置信息,生成所需要的二维码图片,所有参数如下

参数描述
text文本内容
filePath生成图片路径
width
height
format图片格式 ,png,img
hintTypes自定义配置信息

2、createWithLogo()

自定义生成带logo的二维码图片,所有参数如下:

参数描述
text文本内容
filePath生成图片路径
logoPathlogo文件路径
qrCodeWidth二维码宽度
qrCodeHeight二维码高度
logoWidthlogo宽度
logoHeightlogo高度
format图片格式

3、read(String filePath)

解析二维码,获取其中文本信息

参数说明

参数描述
filePath图片路径

4、read(InputStream inputStream)

解析二维码,获取其中的文本信息

参数说明

参数描述
inputStream输入流

5、read(String filePath, Map<DecodeHintType, Object> decodeHints)

自定义配置解析二维码,获取其中的文本信息

参数说明

参数描述
filePath图片路径
decodeHints解析配置信息

6、read(InputStream inputStream, Map<DecodeHintType, Object> decodeHints)

自定义配置解析二维码,获取其中的文本信息

参数说明

参数描述
inputStream输入流
decodeHints解析配置信息

十二、验证码工具类

用于生成英文和数字混合的验证码,使用时通过构造AuthCodeUtils在进行调用其中的方法,构造时参数如下 :

参数描述
width验证码图片宽度
height验证码图片高度
codeCount验证码字符个数
lineCount验证码干扰线数

该工具下的所有方法如下:

1、writeToLocal

生成验证码到本地,案例如下

public class Test{
    public static void main(String[] args) {
        AuthCodeUtil authCodeUtil = new AuthCodeUtil(160,40,5,150);
        try {
            String path="/文件夹路径/code.png";
            //写入到本地时可以通过getCode()方法获取生成的验证码
            String code = authCodeUtil.writeToLocal(path).getCode();
            System.out.println(code);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、getCode

获取生成的验证码字符

public class Test{
    public static void main(String[] args){
      String code = authCodeUtil.writeToLocal(xxx).getCode;
      System.out.println(code);
    }
}

3、write

以流的方式返回给前端,案例如下

public class Test{
    @GetMapping("/code")
    public void getCode(HttpServletResponse response, HttpServletRequest request) throws IOException {
        AuthCodeUtil authCodeUtil = new AuthCodeUtil(100, 50, 4, 50);
        response.setContentType("image/jpeg");
        //禁止图像缓存
        response.setHeader("param", "no-cache");
        response.setDateHeader("Expires", 0);
        authCodeUtil.write(response.getOutputStream());
    }
}

十三、Spring Bean工具类

获取Spring Bean和ApplicationContext

1、获取Bean

public class Test{
    @GetMapping("/test")
    public void test(){
        //通过class获取
        Test test = SpringBeanUtils.getBean(Test.class);
        //通过bean name获取
        Object o = SpringBeanUtils.getBean("test");
    }
}

2、获取ApplicationContext

public class Test{
    private ApplicationContext applicationContext;
    
    public Test(){
        this.applicationContext = SpringBeanUtils.getApplicationContext();
    }
}

工具源码地址:tools-common

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
工具我不再更新,里面大多数方法我迁移到了hutool工具包中,而其中一些不常用的功能被遗弃,项目暂留为以后参考。 common-tools 一、数据库工具类 1、com.baijob.commonTools.db.ds C3p0Ds 和 DruidDs分别是两种连接池的实现,依赖于数据库配置文件,配置文件的样例参考config/db-example.setting 使用时将db-example.setting复制于${classpath}/config/db.setting,按照配置文件中的说明替换相应值 如果使用Druid,则需参考druid-example.setting创建${classpath}/config/druid.setting文件,详情请参考官方文档 使用C3P0则需要参考c3p0-config-example.xml创建${classpath}/c3p0-config.xml来调节C3P0参数 此时即可调用C3p0Ds.getDataSource()或DruidDs.getDataSource()方法获得默认的数据源 如果要自定义数据库配置文件的参数,请调用相应的init(),传入相关参数 注:Setting对象请参考与之对应的章节 2、com.baijob.commonTools.db.DbUtil 数据库工具类,提供了关闭方法:关闭可以传入多个参数,关闭的顺序是按照参数的顺序来的,用于一次性关闭Connnection、Statement、ResultSet等 newSqlRunner方法用于快速新建一个SqlRunner(此类介绍参考下问) 3、com.baijob.commonTools.db.DsSetting,用于读取db.setting文件辅助类,内部使用 4、com.baijob.commonTools.db.SqlRunner类参考Apache的DbUtils工具包,封装了常用的增删改查方法,与com.baijob.commonTools.db.RsHandler配合使用 com.baijob.commonTools.db.RsHandler接口与Apache的DbUtils的ResultSetHandler等价,抽象结果集处理。 二、邮件工具类 1、com.baijob.commonTools.mail.MailAccount 邮件账户类。 可以调用MailAccount(String accountSettingFileBaseClassLoader)读取相对路径的Setting文件,配置参考mailAccount-example.setting 2、com.baijob.commonTools.mail.MailUtil邮件发送工具类,方法请参考注释 此工具类依赖javax.mail,请参考pom.xml添加依赖或手动下载 三、网络相关工具类 1、com.baijob.commonTools.net.AccessControl访问控制,基于配置文件,可以设定IP白名单或黑名单,可以通过配置文件实现简单的账户验证。 配置文件请参考access-example.xml 2、com.baijob.commonTools.net.Connector 连接对象实体类,有host、端口、用户名、密码等属性 3、com.baijob.commonTools.net.HtmlUtil HTML工具类,暂时只提供特殊字符转义 4、com.baijob.commonTools.net.SocketUtil socket工具类。 isUsableLocalPort() 检测本地某个端口是否可用(可用是指没有被其他程序占用) isValidPort()是否是符合规范的端口号 longToIpv4()将long转换为ipv4地址,反方法是ipv4ToLong() netCat()简易的数据发送方法 5、com.baijob.commonTools.net.SSHUtil SSH相关工具类 getSession()获得一个SSH会话 bindPort()将远程主机的端口映射到本地某个端口 6、com.baijob.commonTools.net.URLUtil 将相对、绝对路径转换为URL对象,用于网络或文件流的读写,Setting的配置依赖此工具包 四、线程相关工具类 1、com.baijob.commonTools.thread.BaseRunnable 此类实现了Runnable接口,扩展了功能。 增加名称、ID,调用次数和时间统计、线程停止接口等,并且在线程运行时,不允许此线程第二次启动。 2、com.baijob.commonTools.thread.Executor 线程池工具类 调用静态方法execute()启动线程,此线程在公共的线程池中执行 若想自定义线程池大小或独立控制,可调用newExecutor()实例化一个线程池 excAsync()执行一个异步方法 3、com.baijob.commonTools.thread.SyncQueue 阻塞队列,简化了JDK的BlockingQueue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值