spring boot 完整后端接口案例

news2024/10/6 14:27:43

第一章 会员管理项目父模块搭建

1.1 创建模块mengxuegu-member

 mengxuegu-member 作为所有工程的父工程,用于管理项目的所有依赖。

 1.2 添加pom依赖,pom.xml

  文件位于:会员管理系统/03-配套资料/pom文件/member-pom.xml

<?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>

    <groupId>com.cc</groupId>
    <artifactId>cc-member</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- springboot依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
    </parent>

    <!--依赖版本管理-->
    <properties>
        <mybatis-plus.version>3.3.2</mybatis-plus.version>
        <druid.version>1.1.21</druid.version>
        <fastjson.version>1.2.8</fastjson.version>
        <commons-lang.version>2.6</commons-lang.version>
        <commons-collections.version>3.2.2</commons-collections.version>
        <commons-io.version>2.6</commons-io.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <!--实际依赖-->
    <dependencies>
        <!--mybatis-plus启动器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--生成setter,getter-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <!--Spring Seucrity 加密模块-->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
        </dependency>

        <!-- yml配置处理器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- 工具类依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons-lang.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>${commons-collections.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons-io.version}</version>
        </dependency>
    </dependencies>

</project>

 


第二章 公共工具模块搭建 

用于管理通用的工具类 

2.1  创建模块 mengxuegu-member-util

 (点击父模块,创建子模块)

 2.2 添加自定义的日志模块配置

   1.logback.xml 日志配置文件添加到 resources 目录下

 

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </layout>
    </appender>
    <root level="info">
        <appender-ref ref="stdout" />
    </root>
</configuration>

   文件位于:会员管理系统/03-配套资料/logback.xml

2.3 整合 Lombok

Lombok 介绍

官方网址: https://www.projectlombok.org/features/all

Lombok 工具提供一系列的注解,使用这些注解可以不用定义gettersetterequals、构造方法等,可以消除java代码的臃肿,它会在编译时在字节码文件自动生成这些通用的方法,简化开发 人员的工作

  Lombok 使用

 1.我们在父模块中已经添加了相关的依赖,无需再次添加 

 <!--生成setter,getter-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

2.IDEA 安装 lombok 插件

    作用: 使用IDEA开发时,使用 Lombok 注解生成方法不报错

    先点击file->settings 

 

2.4 规范统一响应枚举 ResultEnum

 ResultEnum 枚举类是为了搭配 Result 规范响应的结果。 

mengxuegu-member-util 模块创建 com.mengxuegu.member.base.ResultEnum 响应结果枚举

 

package com.cc.member.base;


import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum ResultEnum {

    // 成功
    SUCCESS(2000, "成功"),
    // 错误
    ERROR(999, "错误");

    private Integer code;

    public String desc;

}

   文件位于:会员管理系统/03-配套资料/工具类/ResultEnum.java

​​​​​​​ 2.5 规范统一响应结果 Result

 1.说明:为了规范响应的结果,创建一个Result 类来统一响应JSON格式:

    code 操作代码、flag 是否成功、message 提示信息、 data 自定义数据。

 2.​​​​​​​ 在 mengxuegu-member-util 创建com.mengxuegu.member.base.Result用于封装接口统一响应结果

 

package com.cc.member.base;


import com.alibaba.fastjson.JSON;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.Serializable;

/**
 * 用于封装接口统一响应结果
 */
@Data
public class Result implements Serializable {

    private static final Logger logger = LoggerFactory.getLogger(Result.class);

    private static final long serialVersionUID = 1L;

    /**
     * 响应业务状态码
     */
    private Integer code;

    /**
     * 是否正常
     */
    private Boolean flag;

    /**
     * 响应信息
     */
    private String message;

    /**
     * 响应中的数据
     */
    private Object data;

    public Result(Integer code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
        this.flag = code == ResultEnum.SUCCESS.getCode() ? true: false;
    }

    public static Result ok() {
        return new Result(ResultEnum.SUCCESS.getCode(),  ResultEnum.SUCCESS.getDesc(), null);
    }

    public static Result ok(Object data) {
        return new Result(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getDesc(), data);
    }

    public static Result ok(String message, Object data) {
        return new Result(ResultEnum.SUCCESS.getCode(), message, data);
    }

    public static Result error(String message) {
        logger.debug("返回错误:code={}, message={}", ResultEnum.ERROR.getCode(), message);
        return new Result(ResultEnum.ERROR.getCode(), message, null);
    }

    public static Result build(int code, String message) {
        logger.debug("返回结果:code={}, message={}", code, message);
        return new Result(code, message, null);
    }

    public static Result build(ResultEnum resultEnum) {
        logger.debug("返回结果:code={}, message={}", resultEnum.getCode(), resultEnum.getDesc());
        return new Result(resultEnum.getCode(), resultEnum.getDesc(), null);
    }

    public String toString() {
        return JSON.toJSONString(this);
    }


}


第三章 API接口模块搭建

(与第二章工具模块同一级) 

  编写会员管理系统业务逻辑并向外提供 RESTful 风格接口给前端调用

3.1 创建mengxuegu-member-api 接口模块

 

3.2 配置mengxuegu-member-api接口模块中的pom.xml

 mengxuegu-member-api pom.xml 中添加 工具模块 和 web启动器依赖。

<?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">
    <parent>
        <artifactId>cc-member</artifactId>
        <groupId>com.cc</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cc-member-api</artifactId>

    <dependencies>

        <!--依赖工具模块-->
        <dependency>
            <artifactId>cc-member-util</artifactId>
            <groupId>com.cc</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>

        <resources>
            <resource>
                <!--编译时,默认情况下不会将 mapper.xml文件编译进去,
                    src/main/java 资源文件的路径,
                    **/*.xml 需要编译打包的文件类型是xml文件 -->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

        <plugins>
            <!--打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--指定启动类-->
                    <mainClass>com.cc.member.MemberApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>


    </build>

</project>

 位于:会员管理系统/03-配套资料/pom文件/api-pom.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/528680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自建minio实现doris的快速备份与恢复

一.概述 doris支持通过腾讯云bos、阿里云oss、hdfs实现备份与恢复&#xff0c;但是我们公司doris部署在线下机房&#xff0c;如采用oss/bos, 大数据备份与恢复比较慢&#xff0c;会占用一定的带宽&#xff0c;如采用hdfs&#xff0c;担心小文件太多影响现有的hadoop集群。为了保…

C# Forecast 预测数据方法,MathNet.Numerics学习分享

Forecast 数据预测 /// <summary>/// 数据预测/// </summary>/// <param name"xValues">数据序列</param>/// <param name"yValues">数据值</param>/// <param name"forecastPoint">第N个预测序列<…

腾讯面试经验,岗位是C++后端

分享一篇腾讯面经&#xff0c;岗位是C后端&#xff0c;考察的内容是C、Redis、网络。 c shared_ptr的原理 答&#xff1a;内部的共享数据和引用计数实现 补充&#xff1a; shared_ptr多个指针指向相同的对象。shared_ptr使用引用计数&#xff0c;每一个shared_ptr的拷贝都…

【瑞萨RA系列FSP库开发】RASC+Keil的环境搭建

文章目录 一、获取资源包二、安装 Keil 软件、RA 芯片包和 RASC三、RASC 集成到 Keil四、使用 RASC 生成 Keil 工程五、通过 Keil 打开 RASC 的 FSP 配置器界面六、配置和编译 Keil 工程七、使用调试器下载程序 本节将介绍如何在Keil上开发瑞萨RA MCU &#xff08;如需了解 e2 …

元宇宙虚拟展馆和VR的关系与区别

元宇宙是指一个数字化的虚拟世界&#xff0c;这个世界由虚拟现实、增强现实等多种技术构建而成。这个世界中&#xff0c;人们可以用虚拟身份在其中自由穿梭&#xff0c;享受到与现实世界不同的多样化和极致体验。虚拟现实&#xff08;VR&#xff09;则是一种技术手段&#xff0…

一文吃透3类CSS复合选择器【案例演示】

书写CSS样式表时&#xff0c;可以使用CSS基础选择器选中HTML元素。但是在实际网站开发中&#xff0c;一个网页可能包含成千上万的HTML元素&#xff0c;如果仅使用CSS基础选择器是远远不够的。为此&#xff0c;CSS提供了儿种复合选择器&#xff0c;实现了更强、更方便的选择功能…

云原生技术的个人总结

文章目录 云原生概念Kubernetes容器和微服务k8s 服务网格边缘计算云边端 云原生概念 重点在以下三个方面 应用容器化面向微服务架构应用支持容器的编排调度 介绍&#xff1a; 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段&#xff0c;…

公网远程访问公司管家婆ERP进销存管理系统 - 无需公网IP

文章目录 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件&#xff0c;历经十余年市场的洗礼&#xff0c;深受广大中小企业的欢迎&#xff0c;在国内及…

jQuery为什么还在发布新版本?

是的&#xff0c;你没有看错&#xff0c;jQuery发布了3.7.0&#xff0c;这个曾经告诉大家write less do more的JS库&#xff0c;这个已经被很多人遗忘的前端必备&#xff0c;曾经有本书叫《锋利的jQuery》。但现在谁还在每天做着jQuery的工作&#xff0c;谁还熟练jQuery的写法&…

linux环境安装使用tomcat详解

01-安装Tomcat # 0.下载tomcat http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz # 1.通过工具上传到Linux系统中 # 2.解压缩到/usr目录中 [rootlocalhost ~]# tar -zxvf apache-tomcat-8.5.46.tar.gz -C /usr/ -C 用来指…

高创伺服电机飞车问题

高创伺服电机飞车问题 兜兜转转又回到了伺服电机上&#xff0c;此次遇到的伺服电机飞车问题困扰了我有好长一段时间。在飞车发生时&#xff0c;除了电机飞速转动使设备抖动带来的物理冲击&#xff0c;也有身边其他人你一言我一语的情绪冲击。希望这个办法可以解决你的飞车问题…

数据湖与数据仓库区别

数据湖是近两年中比较新的技术在大数据领域中&#xff0c;对于一个真正的数据湖应该是什么样子&#xff0c;现在对数据湖认知还是处在探索的阶段&#xff0c;像现在代表的开源产品有iceberg、hudi、Delta Lake。 那对于数据湖应该是什么样子&#xff0c;先来看数据湖的作者AWS…

浏览器缓存学习记录

图片参考链接&#xff1a;https://blog.csdn.net/weixin_44258964/article/details/106444238 其他学习参考链接&#xff1a; 浏览器的强缓存和协商缓存 『网络篇』之手把手实现强缓存与协商缓存 本文主要是对浏览器的两种缓存模式进行记录学习。 浏览器缓存是什么&#xff…

Kali安装zenmap无法使用成功解决

1,找到 https://nmap.org下载 Optional Zenmap GUI (all platforms): zenmap-7.93-1.noarch.rpm 第二步(已安装的忽略):新版kali Linux不支持rpm命令,需要安装rpm格式转化工具fakeroot sudo apt-get install alien fakeroot 第三步:因为后面安装要是debian(deb)格…

商场布局图怎么画?用于商场内部导航的地图怎么做?

用于商场内部导航的地图怎么做&#xff1f;随着人们生活节奏的加快以及收入的提高&#xff0c;人们对于购物的体验要求也在不断的提升&#xff0c;比如以往在商场里面想要快速找到某个商家或者商品都是通过询问工作人员或者路人&#xff0c;非常麻烦&#xff0c;而且&#xff0…

权重老域名在哪里找-怎么找有历史权重域名做站

在哪挖老域名 在哪挖老域名&#xff1f;作为一个SEO人员&#xff0c;这是一个常见的问题。其实&#xff0c;有许多方法可以挖掘老域名&#xff0c;其中一种最有效的方法是使用147SEO老域名挖掘工具。 147SEO老域名挖掘工具是一种基于云平台的工具&#xff0c;专门为SEO人员提…

SolidWorks草图练习题——第十一届M级

欢迎参加SOLIDWORKS认证考试的同学前来学习&#xff0c;下面是SOLIDWORKS第十一届M级的十道SolidWorks草图练习题&#xff1a; 1、2D11-M1&#xff08;路标&#xff09; [题目] CaTICs 2D11-M1 [注意]其中同心、等长等几何关系。[其他] 同色短线长度相等。(题图为示意图&…

webrtc 测试video_loopback

webrtc版本5841-m110 时间又过去了一年&#xff0c;再分析一下底层有什么改进&#xff0c;依然从video_loopback开始。 我想先不去看信令及协商的过程&#xff0c;只看媒体层有什么变化。所以从这个demo开始 video_loopback 项目路径 src/video/video_loopback 在video_loopb…

openssh原理

目录 一、openssh是什么 二、安装openssh 三、ssh协议 四、客户端登录过程 &#xff08;1&#xff09;远程登录——采用“密码身份验证方式” &#xff08;1&#xff09;远程登录——采用“密钥身份验证&#xff08;免密登录&#xff09;方式” 五、openssh配置文件 &a…

从零开始写一个Vue3+Element Plus的后台管理系统

写在开始之前 接触Vue3也有一年的时间了&#xff0c;除了刚开始用Vue3做了一个小小的项目&#xff0c;其后一直没有机会在项目中真正使用Vue3&#xff0c;反而一直维护Vue2的老项目。作为一个有追求&#xff08;wuliao&#xff09;的前端&#xff0c;那就自己开一个git仓库练手…