SpringBoot优点达项目实战:项目基本配置(二)

news2024/11/16 15:54:10

SpringBoot优点达项目实战:项目基本配置(二)


文章目录

      • SpringBoot优点达项目实战:项目基本配置(二)
        • 1、项目初始化配置
        • 2、MyBatisPlus配置
        • 3、Knife配置
        • 4、定义统一返回数据结构

1、项目初始化配置

创建application.yml文件

web-admin模块src/main/resources目录下创建application.yml配置文件,内容如下:

server:
  port: 8080

创建SpringBoot启动类

web-admin模块下创建com.youdianda.AdminWebApplication类,内容如下:

@SpringBootApplication
public class AdminWebApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminWebApplication.class, args);
    }
}
2、MyBatisPlus配置

Mybatis-Plus为公用工具,故将其配置于common模块。具体配置可参考其官方文档。

common模块的pom.xml文件中增加如下内容:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

model模块的pom.xml文件中增加如下内容

因为model模块下的实体类中需要配置Mybatis-Plus相关注解,故也需引入Mybatis-Plus依赖

<dependencies>
    <dependency>
    	<groupId>com.baomidou</groupId>
    	<artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>
</dependencies>

web-admin模块application.yml文件增加如下内容:

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
    username: <username>
    password: <password>
    hikari:
      connection-test-query: SELECT 1 # 自动检测连接
      connection-timeout: 60000 #数据库连接超时时间,默认30秒
      idle-timeout: 500000 #空闲连接存活最大时间,默认600000(10分钟)
      max-lifetime: 540000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
      maximum-pool-size: 12 #连接池最大连接数,默认是10
      minimum-idle: 10 #最小空闲连接数量
      pool-name: SPHHikariPool # 连接池名称
      
#用于打印框架生成的sql语句,便于调试
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意:需根据实际情况修改hostnameportdatabaseusernamepassword

common模块下创建com.youdianda.common.mybatisplus.MybatisPlusConfiguration类,内容如下:

@Configuration
@MapperScan("com.youdianda.youdianda.web.*.mapper")
public class MybatisPlusConfiguration {
}

注意@MapperScan()的包路径需要根据实际情况进行修改。

3、Knife配置

pom文件配置

web模块的pom.xml文件添加如下内容

因为web-app模块同样需要Knife4j依赖,故在两个的父工程引入依赖即可

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

model模块的pom.xml文件添加上述内容

因为model模块下的实体类需要配置Knife4j相关注解,故也需引入Knife4j依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

配置类

后台管理系统和移动端的接口配置并不相同,所以需各自编写一个配置类。在web-admin模块下创建com.youdianda.web.admin.custom.config.Knife4jConfiguration类,内容如下:

@Configuration
public class Knife4jConfiguration {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI().info(
                new Info()
                        .title("咨询后台管理系统API")
                        .version("1.0")
                        .description("咨询后台管理系统API"));
    }
}

注意pathsToMatch参数需要根据实际情况进行配置。

启动项目访问knife,访问地址:http://localhost:8080/doc.html#/home

image-20240625143823895

4、定义统一返回数据结构

统一接口返回数据结构:为方便前端对接口数据进行处理,统一接口返回数据结构是一个良好的习惯。

以下是所有接口统一返回的数据结构

{
    "code": 200,
    "message": "正常",
    "data": {
        "id": "1",
        "name": "zhangsan",
        "age": 10
    }
}

在common的com.youdianda.common.result包下创建Result类

/**
 * 全局统一返回结果类
 */
@Data
public class Result<T> {

    //返回码
    private Integer code;

    //返回消息
    private String message;

    //返回数据
    private T data;

    public Result() {
    }

    private static <T> Result<T> build(T data) {
        Result<T> result = new Result<>();
        if (data != null)
            result.setData(data);
        return result;
    }

    public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {
        Result<T> result = build(body);
        result.setCode(resultCodeEnum.getCode());
        result.setMessage(resultCodeEnum.getMessage());
        return result;
    }


    public static <T> Result<T> ok(T data) {
        return build(data, ResultCodeEnum.SUCCESS);
    }

    public static <T> Result<T> ok() {
        return Result.ok(null);
    }

    public static <T> Result<T> fail() {
        return build(null, ResultCodeEnum.FAIL);
    }

    public static <T> Result<T> fail(Integer code,String message){
        Result<T> result = build(null);
        result.setCode(code);
        result.setMessage(message);
        return result;
    }
}

ResultCodeEnum

为方便管理,可将返回码code和返回消息message封装到枚举类。

/**
 * 统一返回结果状态信息类
 */
@Getter
public enum ResultCodeEnum {

    SUCCESS(200, "成功"),
    FAIL(201, "失败"),
    PARAM_ERROR(202, "参数不正确"),
    SERVICE_ERROR(203, "服务异常"),
    DATA_ERROR(204, "数据异常"),
    ILLEGAL_REQUEST(205, "非法请求"),
    REPEAT_SUBMIT(206, "重复提交");

    private final Integer code;

    private final String message;

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

注意:由于ResultResultCodeEnum中使用@Data@Getter注解,因此需要再common模块中引入lombok依赖。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

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

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

相关文章

【期末复习】计算机组成原理

海明码 最通俗的海明码计算方法&#xff0c;不需记公式&#xff0c;套步骤即可&#xff08;可能都不需要理解&#xff09; https://www.bilibili.com/video/BV1tL4y1h7Fd/ 接上一海明码视频&#xff08;海明码的纠错&#xff09; https://www.bilibili.com/video/BV1tf4y1A7NX/…

探索 Screen:一个强大的终端复用工具

在日常的系统管理和开发工作中&#xff0c;我们经常需要同时运行多个终端任务&#xff0c;或者需要在一个终端会话中保持任务的持续运行&#xff0c;即使我们断开了与服务器的连接。这时&#xff0c;screen 命令就成为了一个非常有用的工具。本文将详细介绍 screen 的功能、使用…

二叉树 | Java | LeetCode 235 701 450 做题总结,BST特性、 调整二叉树结构(增+删)

235. 二叉搜索树的最近公共祖先 思路&#xff1a;要利用二叉搜索数的性质。当前遍历节点 cur 的数值大于p q时&#xff0c;说明 p q 的父节点在 cur 的左子树。当前遍历节点 cur 的数值小于p q时&#xff0c;说明 p q 的父节点在 cur 的右子树。当前遍历节点 cur 的数值在 p q…

替代TPS7H1101A-SP抗辐射7V/3A大电流低压差稳压器|具有可并联使用达6A电流

1. 产品特性 ➢ 超低电压输入&#xff1a; 1.5V~7V ➢ 最大输出电流&#xff1a; 3A ➢ 电压精度&#xff1a; 1.25% ➢ 超低压降&#xff1a; 62mV1A&#xff08;Vout1.8V&#xff0c; 25℃&#xff09; ➢ 超低噪声&#xff1a; 20.33μVRMS&#xff08;BW10Hz-100kHz&a…

【Python机器学习】聚类算法的对比与评估——在没有真实值的情况下评估聚类

在实践中&#xff0c;使用诸如ARI之类的指标有一个很大的问题。在应用聚类算法时&#xff0c;通常没有真实值来比较结果。如果我们知道了数据的正确聚类&#xff0c;那么可以使用这一信息构建一个监督模型&#xff08;比如分类器&#xff09;。因此&#xff0c;使用类似ARI和NM…

springboot微信点餐小程序-计算机毕业设计源码82910

目 录 摘要 1 绪论 1.1 项目开发背景 1.2目的和意义 1.3springboot框架介绍 2 微信点餐小程序系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 …

AIGC->基于扩散模型的图像生成算法 (课程大纲)

https://edu.csdn.net/course/detail/39618?spm=1001.2014.3001.5507https://edu.csdn.net/course/detail/39618?spm=1001.2014.3001.5507 课程特色是围绕着工作中AIGC文生图的具体用途来对文生图领域进行一个高屋建瓴式的分析,结合具体的应用,尤其是产业界的具体实用场景,…

django图书推荐系统-计算机毕业设计源码89399

摘 要 随着时代的不断更新&#xff0c;社会的不断变换&#xff0c;信息技术的飞速发展&#xff0c;计算机科技技术也逐步走向成熟。图书推荐系统对于当今社会来说是必不可少的一个信息组成部分&#xff0c;它可以管理大量图书、大量读者、让读者有条不紊的进行评分图书&#xf…

ruoyi-vue-plus中使用minio

minio windwos中安装使用&#xff1a; 1、安装 minio下载页面 2、启动&#xff1a;ruoyi-vue-plus&#xff1a; 配置管理&#xff1a;

哈啰集团全面接入通义灵码,AI 生成代码占比 20%,研发提效 12%

6 月 21 日&#xff0c;在阿里云 AI 智领者峰会上海站&#xff0c;哈啰集团算法总监贾立宣布&#xff0c; 哈啰集团已全面接入阿里云通义灵码专属版&#xff0c; 不仅提升了内部研发效率&#xff0c;实现 AI 代码采用率超过 20%&#xff0c;还将灵码接入了哈啰自研 Copilot “海…

JSAPI微信支付提示缺少total_fee

微信小程序云开发中使用微信支付。莫名其妙的报错&#xff1a; 这个报错严重图文不符&#xff0c;驴唇不对马嘴&#xff0c;难排查&#xff0c;很恶心。 原因可能是&#xff1a; 1、在微信支付中关联appid&#xff1b; 2、在小程序云开发控制台中授权&#xff1a;

SecureCRT使用方法(非常简单)!!!

一、简单了解 SecureCRT是一款功能强大的终端仿真软件&#xff0c;广泛用于远程访问和管理服务器。它提供了丰富的功能和安全性&#xff0c;使得远程连接更加简单、高效和可靠。 SecureFX 可以提供安全文件传输。主要用于Linux操作系统客户端文件传输程序&#xff0c;该客户端…

刷题记录6.24

438. 找到字符串中所有字母异位词https://leetcode.cn/problems/find-all-anagrams-in-a-string/ 这道题乍一看感觉很复杂。因为 异位词指由相同字母重排列形成的字符串&#xff0c;包括相同的字符串&#xff0c;那么就会有很多种组成&#xff0c;增加题目的复杂性。 对于这个…

微信小程序修改应用名称

1、修改名称&#xff08;10分钟即可生效&#xff09; 账号管理员 2、修改icon&#xff08;如果logo带有名称则需要修改&#xff09;

【单片机毕业设计选题24025】-基于ESP32的车联网控制器设计

系统功能: 这个设计采用ESP32芯片作为核心控制器,搭配其它传感器,电源模块以及通信模块,用于实现车联网中的MQTT数据收发控制. ESP32芯片负责接收电路模块和相关传感器的数据,包括模拟信号,按键触发信号等, 随后ESP32进行数据处理并通过MQTT协议与通信模块协同工作将数据上传至…

短剧小程序源码:打造个性化的娱乐体验

在数字化媒体时代&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;正迅速受到全球用户的喜爱。短剧小程序源码作为这一趋势下的产物&#xff0c;为短剧的创作、分享和观看提供了一个全新的平台。本文将深入探讨短剧小程序源码的关键特性及其在全球化娱乐市场中的潜力。 一…

同城代驾小程序代驾平台APP代驾软件开发代驾JAVA系统源码

市场分析 随着现代社会的快速发展&#xff0c;人们的生活节奏日益加快&#xff0c;出行需求也愈发多样化。在繁忙的都市生活中&#xff0c;代驾服务以其便捷、安全的特点受到了广大用户的青睐。为了满足这一市场需求&#xff0c;代驾系统基础功能软件应运而生&#xff0c;通过…

Windows重新安装安全中心解决白屏问题

重新安装Windows安全中心&#xff08;Windows Security Center&#xff09;涉及多个步骤&#xff0c;包括重置Windows安全功能和重新安装Windows安全应用。以下是详细的步骤&#xff1a; 1. 通过PowerShell重置Windows安全中心 打开PowerShell: 在开始菜单中搜索“PowerShell”…

AIGC遇上ChatGPT,互联网公司的创意设计师,还能做什么?

随着科技的日新月异&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;和ChatGPT等AI技术的涌现&#xff0c;为互联网公司的创意设计师们描绘了一幅充满挑战与机遇的新图景。在这个数字化、智能化的新时代&#xff0c;创意设计师们不仅要保持敏锐的审美眼光和源源不断的…

精细化视频剪辑解决方案,数字人接入定制开发

为满足企业对于高质量、高效率视频制作的需求&#xff0c;美摄科技推出了全新的精细化视频剪辑解决方案。凭借多端专业的视频编辑工具、模板设计工具以及数字人接入定制开发服务&#xff0c;美摄科技为企业提供了一站式的视频剪辑体验&#xff0c;助力企业轻松打造专业级视频内…