开发中遇到的问题&解决方案(三)

简介: 我们在日常的开发中会使用到很多工具类,比如最常用的Http请求的,或者日期工具类,处理时间差或者对日期进行特殊处理的,还有就是图片上传类的,比如阿里云或者腾讯云得SSO图片上传,以及Excel文件的导入导出。那这些工具类基本上都是跟着项目的,就是每个项目都写各自的工具类,如果分工明确细化到小组那重复代码就多了,那把工具类集成成一个项目类呢,由一个人去维护这个工具类工程,如果是微服务项目就是一个工具类的微服务,这样做的好处就很明显了,至少公司的研发部在使用到常用的工具类时不必再去网上找到。

微信截图_20220531133417.png

前言

我们在日常的开发中会使用到很多工具类,比如最常用的Http请求的,或者日期工具类,处理时间差或者对日期进行特殊处理的,还有就是图片上传类的,比如阿里云或者腾讯云得SSO图片上传,以及Excel文件的导入导出。那这些工具类基本上都是跟着项目的,就是每个项目都写各自的工具类,如果分工明确细化到小组那重复代码就多了,那把工具类集成成一个项目类呢,由一个人去维护这个工具类工程,如果是微服务项目就是一个工具类的微服务,这样做的好处就很明显了,至少公司的研发部在使用到常用的工具类时不必再去网上找到。最近的项目中引入了hutool,估计很多小伙伴都用过去吧,我之前也使用过,只是没有那么全面的认识这个开源项目,那么接下来我们一起来复习一下和去全面认识hutool中常用的工具类吧。

一.统一信用代码的校验

相关类CreditCodeUtil, 老规矩先看看类图微信截图_20220531135623.png

主要包含3的方法,依次是: 1.isCreditCodeSimple,主要是用于统一信用代码的校验功能,简单性判断 2.isCreditCode,主要是用于统一信用代码的校验功能,在校验方便区别1 3.randomCreditCode,随机生成一个测试用的信用代码,可以提供给相应的测试人员去测试相关功能,另外测试需要用到信用代码的话也可以用企查查然后顺便输入一个公司名字就可以拿去测试了

二.Bean操作类,BeanUtil,可以进行Java bean的一系列操作

1.isBean,顾名思义就是判断其是否是一个可以操作的bean,指标: 1).是否存在只有无参数的getXXX方法或者isXXX方法 2).是否存在public类型的字段,即会进行如下的代码判断

public static boolean hasSetter(Class<?> clazz) {
   //通过反射拿到方法
   if (ClassUtil.isNormalClass(clazz)) {
      for (Method method : clazz.getMethods()) {
      //这是我们最最最熟悉的set方法了,当然public的判断就一样的了
         if (method.getParameterCount() == 1 && method.getName().startsWith("set")) {
            return true;
         }
      }
   }
   return false;
}
复制代码

2.map转bean 这个就很实用了,相信很多小伙伴都自己写过方法吧,我也写过,但是有轮子了就不必再重复造轮子了,那下面我们来看看,代码是怎么实现的。 1)主方法

public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass, boolean isIgnoreError) {
   //通过反射实例newInstanceIfPossible返回其构造方法
   //然后通过fillBeanWithMap方法将Map填充到Bean对象中,当然同commons-beanutils里类似参数中可选择跳过copyOptions,以及是否将下划线模式转换为驼峰模式
   return fillBeanWithMap(map, ReflectUtil.newInstanceIfPossible(beanClass), isIgnoreError);
}
复制代码

2)同类方法fillBeanWithMapIgnoreCase,功能类似,附加一个忽略大小写的小功能,但是别看这小细节,我们再编码过程中吃小细节的亏太多了,所以要特别的注意

3.beanToMap 这也是个很实用的方法,在数据库字段转map方面很好用

/**
* 对象转Map
*
* @param bean              bean对象
* @param isToUnderlineCase 是否转换为下划线模式 *对于数据库字段直接转map十分方便
* @param ignoreNullValue   是否忽略值为空的字段 
* @return Map
*/
public static Map<String, Object> beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue) {
  if (null == bean) {
     return null;
  }
  return beanToMap(bean, new LinkedHashMap<>(), isToUnderlineCase, ignoreNullValue);
}
复制代码
小结

今天的两个小知识点就介绍完了,主要来说是开发中的一些坑和能够避开的实用方法。 对hutool的工具类感兴趣的可以看看下方的官方文档哈,有详细的功能介绍,不用再重复造轮子了。

目录
相关文章
|
Java Spring
解决方案 --[restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. ERROR 9680 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter
|
9月前
|
存储 编解码 监控
报告厅解决方案
大型单位、企业都建有报告厅,单位搭建报告厅的目的是为了召开各类会议、学术讨论、演讲、报告、新闻发布、多媒体教学培训、观看电影等活动提供卓越的音质效果、清晰的画面显示以及简单便捷的集中控制。报告厅通常会涉及举办活动时将现场画面的保存记录、活动画面以直播的形式在报告厅之外的其他屏幕上观看(因为报告厅容纳人数有限的原因)。针对这两个需求我们做了以下解决方案
|
网络协议 数据安全/隐私保护
开发中遇到的问题&解决方案(七)
邮件发送相信大家都不陌生吧,一般是用于电商平台比如京东下单后订单信息的邮件发送或者移动这种的月度账单的邮件发送,再有就是通过绑定的邮箱进行密码重置,由邮箱跳转到指定的密码重置页进行密码重置操作。那么下面我们来看看hutool里对于邮件发送的包装是怎么样的。
169 0
开发中遇到的问题&解决方案(七)
|
文字识别 前端开发
开发中遇到的问题&解决方案(三)
我在P2P平台和消费金融平台都待过,所以对借贷这块的系统比较熟悉,其中重复做得最多的功能就是身份证OCR识别和活体识别也叫人脸四张图(眨眼,张嘴,向左,向右),那么今天来说说关于身份证OCR识别的那些坑和解决方案。
96 0
开发中遇到的问题&解决方案(三)
|
安全 机器人 数据安全/隐私保护
开发中遇到的问题&解决方案(九)
在我们的系统里验证码是必不可少的,比如注册登录时,忘记密码时,设置支付密码时或者支付下单时,那验证码的作用在哪里呢?其实就一条为了防止来着黑客和机器人恶意的攻击,那么下面我们来看看hutool里验证码工具类。
222 0
开发中遇到的问题&解决方案(九)
|
Java Linux 数据安全/隐私保护
开发中遇到的问题&解决方案(六)
之前的项目里有用到FTP,需要使用FTP把图片及一些必要文件上传到第三方的FTP服务器上,所以会涉及FTP连接,创建用户,创建文件夹,文件上传等,项目里选用的还是hutool包装的FTP工具类,下面来看看这些功能的在hutool里是怎么包装的。
469 0
开发中遇到的问题&解决方案(六)
|
数据安全/隐私保护
开发中遇到的问题&解决方案(五)
在开发过程中,图片是必不可少的,除了图片的上传下载以外,图片压缩也是很常见的。 下面我们来看看hutool工具类里图片压缩的方法。
286 0
开发中遇到的问题&解决方案(五)
|
JSON 自然语言处理 Java
开发中遇到的问题&解决方案(十)
我们在开发中一般遇到会对于敏感词的过滤或者屏蔽,因为之前做过社区类的APP,在这方面也踩了不少的坑,算是也积累了一点点的经验,那么今天我们来看看hutool里对于敏感词的一些操作,工具类SensitiveUtil()
341 0
开发中遇到的问题&解决方案(十)
|
SQL NoSQL Oracle
开发中遇到的问题&解决方案(二)
一个软件系统最重要的是什么?毫无疑问是数据,那什么是数据的&#39;运载体&#39;,什么作为后端与数据库的桥梁和沟通者呢,是SQL。我是Java开发出身,大学课程当时学习的是SQL Server,而且后面工作中实际用到过Oracle,DB2以及使用的最普遍的My SQL,至于No SQL 这一类下的常用的就是Redis和MongoDB了,这些后面再详细举例说明。今天讲的案列与表情相关,那么接下来进入今天的主题。
138 0
开发中遇到的问题&解决方案(二)
|
设计模式 前端开发 Java
开发中遇到的问题&解决方案(一)
在开发过程在我们往往会遇到很多的开发阻碍或者因为原生框架的不支持导致的一系列问题或者有的不是问题,是我们使用普通的大量的复制粘贴改改就能用的代码去实现功能,这样使得代码很冗余,我们能不能去尝试找一些好的方案比如采用设计模式这些去优化我们的代码,实现代码简洁明了,易扩展呢?答案是肯定的。这个系列文章会使用案列加解决方案的形式为大家讲解,那下面我们开始吧。
682 0
开发中遇到的问题&解决方案(一)