springboot-3.5.9-公共模块

我爱海鲸 2026-01-15 11:24:01 暂无标签

简介全局异常、返回实体、common

1、resp包:

ResultData

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author ADMIN
 * @version 1.0
 * @description: 公共返回
 * @date 2026/1/15/周四 10:51
 */
@Data
@Accessors(chain = true)
public class ResultData<T> {
    private String code;
    private String message;
    private T data;
    private long timestamp;

    public ResultData(){
        this.timestamp = System.currentTimeMillis();
    }

    public static <T> ResultData<T> success(T data){
        return new ResultData<T>()
                .setCode(ReturnCodeEnum.RC200.getCode())
                .setMessage(ReturnCodeEnum.RC200.getMessage())
                .setData(data);
    }

    public static <T> ResultData<T> fail(String code, String message){
        return new ResultData<T>()
                .setCode(code)
                .setMessage(message);
    }
}
ReturnCodeEnum:
import lombok.Getter;

import java.util.Arrays;

/**
 * @author ADMIN
 * @version 1.0
 * @description: 返回状态枚举
 * @date 2026/1/15/周四 10:53
 */
@Getter
public enum ReturnCodeEnum {
    /**
     * 操作失败
     **/
    RC999("999", "操作失败"),

    /**
     * 服务异常
     */
    RC500("500", "系统异常,请稍后重试"),
    /**
     * 操作成功
     **/
    RC200("200", "success");

    private final String code;
    private final String message;

    ReturnCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public static ReturnCodeEnum getReturnCodeEnum(String code) {
        for (ReturnCodeEnum elem : ReturnCodeEnum.values()) {
            if (code.equals(elem.getCode())) {
                return elem;
            }
        }
        return null;
    }
}

2、exp包:

GlobalExceptionHandler:
import cn.lomark.zoc.resp.ResultData;
import cn.lomark.zoc.resp.ReturnCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author ADMIN
 * @version 1.0
 * @description: 全局异常捕获
 * @date 2026/1/15/周四 10:57
 */

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(RuntimeException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public ResultData<String> exception(Exception e){
        log.info("全局异常: {}", e.getMessage(), e);
        return ResultData.fail(ReturnCodeEnum.RC500.getCode(), e.getMessage());
    }

    @ExceptionHandler(ServiceException.class)
    @ResponseStatus(HttpStatus.OK)
    public ResultData<String> serviceException(Exception e){
        log.info("业务异常: {}", e.getMessage(), e);
        return ResultData.fail(ReturnCodeEnum.RC500.getCode(), e.getMessage());
    }
}
ServiceException:
import lombok.Getter;

import java.io.Serial;

/**
 * @author ADMIN
 * @version 1.0
 * @description: 业务异常
 * @date 2026/1/15/周四 11:01
 */
@Getter
public final class ServiceException extends RuntimeException {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 错误码
     */
    private Integer code;

    /**
     * 错误提示
     */
    private String message;

    /**
     * 空构造方法,避免反序列化问题
     */
    public ServiceException() {
    }

    public ServiceException(String message) {
        this.message = message;
    }

    public ServiceException(String message, Integer code) {
        this.message = message;
        this.code = code;
    }


    public ServiceException setMessage(String message) {
        this.message = message;
        return this;
    }
}

3、pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>xyz.haijin.core</groupId>
        <artifactId>haijinplatform</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>common</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

你好:我的2025