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

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.HikariDataSourceurl: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8username: <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 #连接池最大连接数,默认是10minimum-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 {@Beanpublic 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.mzph.cn/diannao/35137.shtml

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

相关文章

学习笔记——动态路由——RIP(RIP工作原理/防环机制)

三、RIP工作原理/防环机制 1、工作原理 配置好RIP的路由器会每隔30s,向邻居路由器自动发送RIP路由更新报文。报文里面携带了其所知道的所有路由。 通过发送数据包进行路由信息的交互&#xff0c;路由器启动RIP协议&#xff0c;向周围邻居路由器传递request(请求)response(响…

克隆网站的风险

克隆网站的风险 随着互联网的快速发展&#xff0c;克隆网站也变得越来越常见。克隆网站是指复制原始网站的外观和功能&#xff0c;并伪装成原始网站。虽然克隆网站可以提供与原始网站相似的服务和体验&#xff0c;但它们也带来了一系列风险。本文将探讨克隆网站的风险&#xff…

我的故事与思考

在24年的高考帷幕落下之后&#xff0c;我们站在了一个新的起点&#xff0c;面对着即将开始的大学新生活&#xff0c;我们面临着一道重要的选择题&#xff1a;是选择一个心仪的专业&#xff0c;还是选择一个知名度更高的学校&#xff1f;这是一个困扰了众多考生和家长的长期难题…

Docker 从入门到精通(大全)

一、概述 1.1 基本概念 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。…

使用QtGui显示QImage的几种方法

问题描述 我是一名刚学习Qt的新手,正在尝试创建一个简单的GUI应用程序。当点击一个按钮时,显示一张图片。我可以使用QImage对象读取图片,但是否有简单的方法调用一个Qt函数,将QImage作为输入并显示它? 方法一:使用QLabel显示QImage 最简单的方式是将QImage添加到QLabe…

bigtop gradle 任务依赖关系

./gradlew deb 会编译ubuntu的所有deb包 任务deb会依赖17个任务&#xff0c;它们会按字母排序执行&#xff0c;如下&#xff1a; alluxio-deb bigtop-groovy-deb bigtop-jsvc-deb bigtop-utils-deb flink-deb hadoop-deb hbase-deb hive-deb kafka-deb livy-deb phoenix-deb …

这5款国内可用的宝藏AI视频工具,不允许有人还不知道!(建议收藏)

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 前几天一位粉丝说给…

【MySQL】数据库——存储引擎

一、存储引擎概述 1.概念 MySQL中的数据用各种不同的技术存储在文件中&#xff0c;每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力&#xff0c;这些不同的技术以及配套的功能在MySQL中称为存储引擎存储引擎是MySQL将数据存储在文件系统中的存…

会声会影2024永久激活码序列号注册机分享

大家好呀&#xff0c;今天我想给大家安利一款我最近超级喜欢的软件——会声会影2024&#xff01;&#x1f31f; 作为一个视频编辑爱好者&#xff0c;我尝试过很多视频编辑软件&#xff0c;但总感觉少了那么一点点“火花”。直到我遇到了会声会影2024&#xff0c;它完全改变了我…

环境科学SCI期刊,IF=3+,易录用,几乎不退稿

一、期刊名称 International Journal of Environmental Science and Technology 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;环境科学 影响因子&#xff1a;3.1 中科院分区&#xff1a;4区 三、期刊简介 International Journal of Environmental Sci…

C++_STL---string类

前言 说起string类&#xff0c;首先需要了解的是 - string类是什么&#xff1f; std::string是类模板std::basic_string的一个元素类型为char的实例化&#xff0c;而basic_string则是对元素指针的封装。由于basic_string的实现对字符串操作进行了优化&#xff0c;所以它不能用…

深入理解计算机系统 CSAPP 家庭作业6.45

CS:APP3e, Bryant and OHallaron 可以参考这里 void bijk(array A, array B, array C, int n, int bsize) {int i, j, k, kk, jj;double sum;int en bsize*(n/bsize);for (i 0; i < n; i)for (j 0; j < n; j)C[i][j] 0.0;for (kk 0; kk < en; kk bsize) {for (j…

QT拖放事件之八:通过全局剪切板中的接口QClipboard::mimeData()来获取MIME类型数据

1、演示效果 首先向剪切板写入数据,然后点击paste按钮进行从全局剪切板中 获取 MIME数据。。。 2、核心代码 void Widget::on_pasteBtn_clicked() {const QClipboard* clipBoard = QGuiApplication::clipboard()

前端路由中的meta、matched是什么?有哪些作用?

在前端路由中&#xff0c;尤其是在 Vue.js 这样的框架中&#xff0c;meta 和 matched 是两个常见的概念&#xff0c;它们提供了关于路由的额外信息和上下文 1. meta 一个可以附加到 Vue Router 路由定义上的自定义字段 它通常用于存储一些与路由相关的元数据或信息&#xff0…

算法07 深度优先搜索及相关问题详解

深搜与广搜是搜索算法中最常用的两种算法&#xff0c;通过深度优先搜索解决问题还会用到回溯和剪枝&#xff0c;让我们一起进入本章&#xff0c;了解深搜的基本概念和模板&#xff0c;并学会解决一些常见问题。 目录 问题导入 走迷宫问题 如何走&#xff1f; 问题建模 如何…

python ----- xml 命名空间与xpath详解

一、简介 本文章以如下xml 样例进行讲解命名空间和xpath xml_text"""<?xml version"1.0"?><actors xmlns:fictional"http://characters.example.com"xmlns"http://people.example.com"><actor><name>…

SpringBean的管理

一、bean的名字与标识符 <bean id"" class""></bean> bean的名字作用: 获取这个bean通过bean名字获取 bean名字配置方式: id: 唯一标志符, 命名规范与变量命名规范一样, 包含特殊符号name: 配置名字: 可以包含特殊符号,没有要求, 比如. 一…

基于支持向量机的垃圾邮件分类,使用SVM+flask+vue

sms-classify 基于支持向量机的垃圾邮件分类&#xff0c;使用SVMflaskvue 数据集和源码地址 数据集 SMS Spam Collection Data Set 来源于 UCI。样例被分为非垃圾邮件&#xff08;86.6%&#xff09;和垃圾邮件&#xff08;13.4%&#xff09;&#xff0c;数据格式如下&#xff…

网络爬虫中Xpath的使用方法

正则表达式虽然可以处理包含了诸如 HTML 或 XML 内容的字符串&#xff0c;但只能根据文本的 特征匹配字符串&#xff0c;而忽略字符串所包含的内容的真实格式。为了解决这个问题&#xff0c;Python 引入 XPath 以及支持 XPath 的第三方库 lxml&#xff0c;专门对 XML 或 HTML 格…

git 合并master到分支

master分支的代码领先自己的分支,git 如何把master分支代码合并到自己的分支 1.首先切换到主分支 git checkout master 2.使用git pull 把领先的主分支代码pull下来 git pull 3.切换到自己的分支 git checkout xxx(自己的分支) 4.把主分支的代码merge到自己的分支 git merge ma…