common公共类code

项目代码已上传到gitLab上面,

地址为:

https地址:https://gitlab.com/open_sources/blog_cloud.git

ssh地址:[email protected]:open_sources/blog_cloud.git

通过上一章《SpringCloud开发个人博客项目(框架搭建)》,可以搭建出一个springCloud的项目雏形,今天将项目使用到的公共类做一个编码,主要涉及到项目公共返回参数、全局异常处理类、工具类、校验器、静态常量、接口返回规则等的定义,在自己实际开发过程中,可以根据自己的需求,自己添加相应代码,这节主要是做一个common类的基本架子,后面在开发过程中,我们户会添加更多的公共方法、参数等,下面进入本节的主题。

1. 公共返回参数

在建好的的项目模块common下添加enums包,然后创建枚举类CommonReturnParameter,如下图:

common公共类code_第1张图片

按照上图添加返回参数规则,目前代码如下:

package com.blog.common.enums;

import lombok.Getter;

/**
 * 

Title: CommonReturnParameter

*

Description: 接口请求公共返回参数定义,在开中严格按照此状态码、状态说明返回

*

Company: http://www.yinjiedu.com

*

Project: blog_cloud

* * @author: qiwei * @Date: 2019/8/4 22:26 * @Version: 1.0 */ @Getter public enum CommonReturnParameter { //通用操作成功code 2001XX REQUEST_SUCCESS(200100, "请求成功"), OPERATE_SUCCESS(200101, "操作成功"), UPLOAD_SUCCESS(200102, "文件上传成功"), UPDATE_SUCCESS(200103, "更新成功"), //通用的操作错误码 5001XX REQUEST_FAILD(500100, "请求失败"), OPERATE_FAILD(500101, "操作失败"), UPLOAD_FAILD(500102, "文件上传失败"), UPDATE_FAILD(500103, "更新失败"), SYSTEM_ERROR(5001, "系统错误"), PARAMETER_ERROR(500104, "参数错误"), //登录模块返回码 5002XX SESSION_ERROR(500201, "Session不存在或者已经失效"), PASSWORD_EMPTY(500202, "登录密码不能为空"), MOBILE_EMPTY (500203, "手机号不能为空"), MOBILE_ERROR(500204, "手机号格式错误"), MOBILE_NOT_EXIST(500205, "手机号不存在"), PASSWORD_ERROR(500206, "密码错误"), ACCOUNT_EMPTY(500207, "账号不能为空"), ACCOUTN_IS_NOT_EXIST(500208, "账号不存在"), ; private Integer code; private String message; CommonReturnParameter(Integer code, String message) { this.code = code; this.message = message; } }

提示:这里使用到了lombok这个依赖,在idea中第一次使用lombok的时候,会报编译错误,这是因为idea需要装lombok的plugin,具体过程如下图:

common公共类code_第2张图片

进去之后,搜索plugins,然后在插件安装里面搜索lombok安装,如下图:

common公共类code_第3张图片

因为我已经安装过了,所以界面是上面这样的,具体插件安装,如果不清楚可以网上查找资料,有很多不错的文章。

2. 全局异常处理类

系统所有的异常处理,都通过这个类定义的规则去返回,如下图:

代码如下:

package com.blog.common.exception;

import com.blog.common.enums.CommonReturnParameter;

/**
 * 

Title: CommonException

*

Description: 公共异常处理类

*

Company: http://www.yinjiedu.com

*

Project: blog_cloud

* * @author: qiwei * @Date: 2019/8/4 22:24 * @Version: 1.0 */ public class CommonException extends RuntimeException { private static final long serialVersionUID = 1L; private Integer code; public CommonException(Integer code, String message) { super(message); this.code = code; } public CommonException(CommonReturnParameter commonReturnParameter) { super(commonReturnParameter.getMessage()); this.code = commonReturnParameter.getCode(); } }

至于怎么使用,在后面写接口代码的时候,会有实际的代码演示,当然这个异常处理类不完善,只是写了一个简单的自定义异常处理,后面会一步一步完善。

3. 工具类

3.1 UUID转换工具

在实际开发中,我们会用到java的util包提供的UUID,但是UUID是用"-"分割的,我这里做了一个工具类将"-"去掉,代码如下:

package com.blog.common.utils;

import java.util.UUID;

/**
 * 

Title: UUIDUtil

*

Description: uuid转换

*

Company: http://www.yinjiedu.com

*

Project: blog_cloud

* * @author: qiwei * @Date: 2019/8/4 22:21 * @Version: 1.0 */ public class UUIDUtil { /** * @description: uuid转换,将默认的"-"转换为"" * @auther: qiwei * @date: 2019/7/21 22:20 * @return: */ public static String uuid() { return UUID.randomUUID().toString().replace("-", ""); } }

3.2 手机号码校验工具

这里先简单写一个手机号码校验工具,后面遇到复杂的校验我们再一步一步完善,如下图:

具体代码:

package com.blog.common.utils;

import org.springframework.util.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 

Title: ValidatorUtil

*

Description: 校验工具类

*

Company: http://www.yinjiedu.com

*

Project: blog_cloud

* * @author: qiwei * @Date: 2019/8/6 20:55 * @Version: 1.0 */ public class ValidatorUtil { //手机号码校验正则 private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); /** * @description: 手机号码校验方法 * @auther: qiwei * @date: 2019/8/6 20:56 * @param cellPhone 手机号码 * @return: boolean */ public static boolean isMobile(String cellPhone) { if(StringUtils.isEmpty(cellPhone)) { return false; } Matcher matcher = mobile_pattern.matcher(cellPhone); return matcher.matches(); } }

3.3 手机号码校验注解自定义

在3.2我们看到可以使用方法校验一个手机号码是否合法,我们现在使用注解,对手机号码校验这个使用频率比较高的校验类做一个高级写法。<这里先使用注解做一个例子,后面对java里面的自定义注解,我会专门做一个分享专题,想了解的小伙伴关注公众号就行,写完我会及时推送给大家>。

注:在使用自定义注解的时候,我们这里使用到validation依赖的@Constraint注解,所以需要在项目引入这个依赖,如下:


      org.springframework.boot
      spring-boot-starter-validation
 

下面是校验注解的写法,如图:

具体代码:

package com.blog.common.validator;

import javax.validation.Constraint;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 

Title: IsMobile

*

Description: 手机号码校验注解定义

*

Company: http://www.yinjiedu.com

*

Project: blog_cloud

* * @author: qiwei * @Date: 2019/8/6 21:04 * @Version: 1.0 */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented @Constraint(validatedBy = {IsMobileValidator.class}) public @interface IsMobile { boolean required() default true; String message() default "手机号码格式错误"; }

校验依据类定义如图:

具体代码如下:

package com.blog.common.validator;

import com.blog.common.utils.ValidatorUtil;
import org.springframework.util.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 

Title: IsMobileValidator

*

Description: 手机号码校验器,供IsNobile注解使用

*

Company: http://www.yinjiedu.com

*

Project: blog_cloud

* * @author: qiwei * @Date: 2019/8/6 21:09 * @Version: 1.0 */ public class IsMobileValidator implements ConstraintValidator { private boolean required = false; /** * Initializes the validator in preparation for * {@link #isValid(Object, ConstraintValidatorContext)} calls. * The constraint annotation for a given constraint declaration * is passed. *

* This method is guaranteed to be called before any use of this instance for * validation. * * @param constraintAnnotation annotation instance for a given constraint declaration */ @Override public void initialize(IsMobile constraintAnnotation) { required = constraintAnnotation.required(); } /** * Implements the validation logic. * The state of {@code value} must not be altered. *

* This method can be accessed concurrently, thread-safety must be ensured * by the implementation. * * @param value object to validate * @param context context in which the constraint is evaluated * @return {@code false} if {@code value} does not pass the constraint */ @Override public boolean isValid(String value, ConstraintValidatorContext context) { if(required) { return ValidatorUtil.isMobile(value); }else { if(StringUtils.isEmpty(value)) { return true; }else { return ValidatorUtil.isMobile(value); } } } }

目前common公共类暂时就定义这么几个,后面在开发过程中我们慢慢完善,有兴趣的朋友可以一起参与进来。项目代码全部上传到git!

获取实时信息,关注公众号:『编程之艺术』,二维码:

你可能感兴趣的:(个人博客,手机号码校验,公共工具类,Java,springCloud)