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

简介: 在开发过程在我们往往会遇到很多的开发阻碍或者因为原生框架的不支持导致的一系列问题或者有的不是问题,是我们使用普通的大量的复制粘贴改改就能用的代码去实现功能,这样使得代码很冗余,我们能不能去尝试找一些好的方案比如采用设计模式这些去优化我们的代码,实现代码简洁明了,易扩展呢?答案是肯定的。这个系列文章会使用案列加解决方案的形式为大家讲解,那下面我们开始吧。


前言

在开发过程在我们往往会遇到很多的开发阻碍或者因为原生框架的不支持导致的一系列问题或者有的不是问题,是我们使用普通的大量的复制粘贴改改就能用的代码去实现功能,这样使得代码很冗余,我们能不能去尝试找一些好的方案比如采用设计模式这些去优化我们的代码,实现代码简洁明了,易扩展呢?答案是肯定的。这个系列文章会使用案列加解决方案的形式为大家讲解,那下面我们开始吧。

  • 主题:解决Spring Boot里的表单字段重复性校验的问题
  • 问题阐释:重复性校验体现在哪里?大量的重复代码
  • 案例:不论是在Spring还是Spring Boot的使用中我们后端开发人员都会遇到表单校验的问题,有人说前端做了校验后端就不用做了,别!不是不相信队友,后端也做校验的话会少很多问题,相信很多后端小伙伴都深有体会。回到正题上,字段校验的话,字段少的话,就是Controller里一堆if判断,功能当然实现了但是呢代码看着很乱,各种判断,后期也不好维护。当然后面也免不了被接手项目的人喷代码像翔一样。所以呢,写代码用点心,可以不被喷。
  • 说到校验很多小伙伴找到的都是使用Validation来校验参数,没错,使用Validation自带一些注解的确能解决很多常规的问题,比如下图这些:

微信截图_20220531133500.png

另外经验丰富的小伙伴很多都喜欢用正则表达式,所以@Pattern注解就很受欢迎了,比如身份证校验的,15位或者18位,用代码去取数组判断就很麻烦,用正则表达式呢,@Pattern(regexp="(^\d{15})|(^\d{18})(\d18)|(^\d{17}(\d|X|x)$)",message="身份证格式不正确!"),这样就可以了,是不是很方便,那正则表达式也不能实现的呢,那就使用自定义注解吧,下面以身份证校验为例子。

1.实现注解方法,注意下面的几个注解元
@Target({ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
//加载校验的类
@Constraint(validatedBy = IdCardNoValidator.class)
public @interface IdCardNoConstraint {
    String message() ;
    Class<?>[] groups() default { };
    Class<? extends Payload>[] payload() default { };
}
复制代码
2.校验规则,具体的校验,返回true/false,false则触发错误提示即message
public class IdCardNoValidator implements ConstraintValidator<IdCardNoConstraint, Object> {
   @Override
   public void initialize(IdCardNoConstraint constraintAnnotation) {
   }
   @Override
   public boolean isValid(Object value, ConstraintValidatorContext context) {
     String regex="/^[1-8][1-7]\\d{4}(?:19|20)\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01])\\d{3}[\\dX]$/\n" +
               "\n";
    return    Pattern.matches(value.toString(),regex);
   }
复制代码
3.自定义注解的使用
@IdCardNoConstraint(message="身份证格式不正确,请输入正确的身份证!")
private String idCardNo;
复制代码

以上三步就完成了一个自定义注解的编写,如果项目中出现大量的同类似校验,写这个一个比写一堆if-else好多了。

小结

今天的问题及解决方案就讲到这里,我们明天继续。fighting......

目录
相关文章
|
11月前
|
API PHP 开发者
速卖通商品详情接口(速卖通API系列)
速卖通(AliExpress)是阿里巴巴旗下的跨境电商平台,提供丰富的商品数据。通过速卖通开放平台(AliExpress Open API),开发者可获取商品详情、订单管理等数据。主要功能包括商品搜索、商品详情、订单管理和数据报告。商品详情接口aliexpress.affiliate.productdetail.get用于获取商品标题、价格、图片等详细信息。开发者需注册账号并创建应用以获取App Key和App Secret,使用PHP等语言调用API。该接口支持多种请求参数和返回字段,方便集成到各类电商应用中。
|
12月前
|
IDE JavaScript API
1688寻源通API对接流程以及说明
1688寻源通API(这里主要指的是跨境寻原通数据接口)的对接流程及说明如下:
|
10月前
|
人工智能 自然语言处理 JavaScript
鸿蒙 Next 对接 AI API 实现文字对话功能指南
本指南介绍如何在鸿蒙 Next 系统中对接 AI API,实现文字对话功能。首先通过 DevEco Studio 创建项目并配置网络权限,选择合适的 AI 服务(如华为云或百度文心一言)。接着,使用 Node.js 转发请求,完成客户端与服务器端代码编写。最后进行功能测试与优化,确保多轮对话顺畅、性能稳定。此过程需严格遵循开发规范,充分利用系统资源,为用户提供智能化交互体验。
502 0
|
人工智能 小程序 数据可视化
低代码平台功能对比:哪个平台最高效
数字化转型背景下,低代码平台成为企业提升开发效率的优选。低代码开发允许通过少量代码甚至无代码创建应用,简化开发过程,降低门槛。本文介绍低代码概念及优势,并推荐Zoho Creator、织信、Mendix、微搭、轻流等平台,建议企业根据功能、易用性、集成能力等因素选择合适的平台。低代码平台能显著缩短开发周期,降低成本,提升业务敏捷性,增强员工参与度,并具备良好的可维护性。
648 61
|
搜索推荐 数据挖掘 API
淘宝商品API接口的对接及收益
淘宝商品API接口是淘宝开放平台提供的数据服务,支持商品搜索、详情、评价等功能,帮助开发者快速获取商品数据,提升用户体验,降低运营成本,增强市场竞争力,并支持数据分析和业务决策。对接流程包括注册账号、获取API密钥、阅读文档、编写请求代码、发送请求、解析数据、错误处理和日志记录等步骤。通过实际案例,如价格比较网站、库存管理工具、个性化推荐系统等,展示了API接口的应用价值。
440 5
|
开发框架 运维 前端开发
构建一体化运维平台的八大功能
【6月更文挑战第6天】构建一体化运维平台的关键8个基本功能。
|
供应链 Oracle 中间件
ERP系统与电子商务集成:实现无缝业务流程
【7月更文挑战第29天】 ERP系统与电子商务集成:实现无缝业务流程
462 0
|
移动开发 安全 小程序
mpaas常见问题之小程序容器,跑起来后一直提示 "网络不给力, 请稍后再试"如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
344 0
|
前端开发 开发工具 iOS开发
mPaaS常见问题之真机预览与调试扫码调式 release包开启日志如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
545 0
开发中遇到的问题&解决方案(四)
今天继续hutool工具类的认识,废话不多说下面直接进入主题。
504 0
开发中遇到的问题&解决方案(四)

热门文章

最新文章