# Spring-boot2.x **Repository Path**: lhwgit/Spring-boot2.x ## Basic Information - **Project Name**: Spring-boot2.x - **Description**: 极力推荐!!(全面适配Spring boot2.7.6版)基于Spring boot框架搭建的架构模板,一个可直接上手开发的轻量化架构模板。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-01-27 - **Last Updated**: 2025-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring boot模板(高度适配Spring boot2.7.6版) ## 0.导读 此模板目前已集成的模块如下:(已移除大量依赖,最小化安装) * 初级配置: * ~~Swagger(图形化测试工具)~~ * Mybatis-plus(Mybatis的增强工具) * ~~Redis(非关系型数据库)~~ * ~~ObjectStorage(对象存储服务)~~ * ~~中级配置:~~ * ~~Aop(切面)~~ * ~~Transactional(事务)~~ * ~~Scheduled(定时器)~~ * ~~Interceptor(拦截器)~~ * ~~高级配置:~~ * ~~RabbitMq(消息中间件)~~ 目录结构如下: ```markdown com.springboot.framework ├── annotation //注解包 | └── ...... ├── aop //切面类包 | └── ...... ├── config //配置类包 | ├── model | | └── ...... | └── ...... ├── constant //常量包 | └── ...... ├── controller //控制器层 | ├── request | | └── ...... | └── ...... ├── dao //数据访问对象层 | ├── mapper | | └── ...... | └── pojo | | └── ...... ├── dto //数据传输对象包【已移除】 | └── ...... ├── exception //异常类包 | └── ...... ├── interceptor //拦截器包 | └── ...... ├── service //服务层 | ├── impl | | └── ...... | └── ...... ├── utils //工具类包 | └── ...... ├── vo //值对象包 | └── ...... └── ProjectApplication ``` ## 1.开始使用 1. 请先确认已在本地配置MySQL服务、Redis服务 2. 使用idea导入项目 ## 2.创建数据表 * 方式一:使用图形化工具创建(以Navicat为例)admin表,结构如下: | 名称 | 类型 | 长度| 小数点 | 不是null | 虚拟| 键 | 注释| |:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:| | id | int | 11| 0 | √ | | 🔑1 | ID号| | account | varchar | 16| 0 | √ | | | 账号| | password | varchar | 32| 0 | √ | | | 密码| | phone | varchar | 11| 0 | √ | | | 手机号| | name | varchar | 16| 0 | √ | | | 姓名| | create_by | varchar | 64| 0 | | | | 创建者| | create_date | timestamp | 0| 0 | | | | 创建时间| | update_by | varchar | 64| 0 | | | | 修改者| | update_date | timestamp | 0| 0 | | | | 修改时间| | status | tinyint | 1| 0 | √ | | | 状态,-1删除,0禁用,1正常| > 特别注意: > + id->√自动递增 > + create_date->默认:CURRENT_TIMESTAMP > + update_date->默认:CURRENT_TIMESTAMP√根据当前时间戳更新 > + status->默认:1 ------------------------------------ * 方式二:使用SQL查询语句创建admin表,如下: ```mysql DROP TABLE IF EXISTS `sys_admin`; CREATE TABLE `sys_admin` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `account` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号', `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码', `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号', `name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者', `create_date` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改者', `update_date` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间', `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态,-1已删除,0禁用,1正常', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '管理员表' ROW_FORMAT = Dynamic; ``` ## 3.配置redis 此模板中redis仅用于保存用户登录token值和用户信息。 1. 下载并安装redis到本地,浏览器输入[https://github.com/microsoftarchive/redis/releases](https://github.com/microsoftarchive/redis/releases)。选择最新版msi文件下载并安装。 2. 启动redis服务 3. (可选)下载redis图形化工具,方便查看记录。 > redis非必需,若不需要做权限校验,可在拦截器中加入访问url,或在控制器中为对应方法添加@ACS注解(不建议)。 ## 4.启动项目 运行com.springboot.framework包下启动类ProjectApplication ## 5.测试接口 项目启动后在浏览器输入[http://localhost:8088/swagger-ui.html](http://localhost:8088/swagger-ui.html)即可加载。 此模板默认写好一套admin的基础接口,建议先对所有接口做一次数据测试,确认无误后即可开始真正的自定义项目。 > 端口号可在application.yaml文件中修改。 ## 6.配置tk.mybatis MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,甚至连 XML 文件都不用编写! #### 1.更新配置文件generatorConfig.xml 在src/main/resources目录下,更新数据库连接配置。参考如下(代码18-24行): ```xml ``` 更新数据表配置,参考如下(代码50-54行): ```xml
``` > 默认pojo类生成路径为com.springboot.framework.dao.pojo包下(代码29行) #### 2.启动CreateUtil类 ``` 运行com.springboot.framework.utils下CreateUtil类 ``` > 单独运行CreateUtil.main()方法后,切记把项目启动类更新回ProjectApplication #### 3.配置pojo类 目录为com.springboot.framework.dao.pojo,参考如下: ```java /** * 以下4个注解详解 * 1.@Data lombok插件,会在编译时自动生成get、set、toString方法(简化代码) * 2.@Table(name = "数据库表名") 与数据表绑定,若类名与数据表名遵循驼峰规则对应,可省略此参数 * 3.@Id 与数据表主键绑定 * 4.@Transient 冗余字段,额外参数(即数据表不存在的字段) */ @Data @Table(name = "sys_admin") public class Admin implements Serializable { @Id private Integer id; private String account; private String password; private String phone; private String name; private String createBy; private Date createDate; private String updateBy; private Date updateDate; private Byte status; @Transient private String accessToken; } ``` #### 4.配置mapper类 在配置传统mybatis映射时,一般为mapper类与xml文件对应。此框架加入tk.mybatis插件,无需xml文件。 1. 删除xml文件包(删除src/main/resources目录下mapper包) 2. 配置mapper接口,目录为com.springboot.framework.dao.mapper,参考如下: ```java /** * 1.继承tk.mybatis.mapper.common.Mapper接口(extends Mapper), * 此时已可以直接在Service层直接调用mapper方法,具体方法参考文档https://blog.csdn.net/sinat_38419207/article/details/82907387。 * 2.以注解方式自定义SQL语句(@Select、@Update、@Insert、@Delete),参考如下登陆接口。 */ public interface AdminMapper extends Mapper { /** * 登陆 * * @param loginKey 管理员用户名或手机号 * @param password 密码 * @return 管理员 */ @Select("SELECT * FROM sys_admin WHERE status != -1 AND (phone = #{loginKey} OR account = #{loginKey}) AND password = #{password}") Admin login(@Param("loginKey") String loginKey, @Param("password") String password); //...... } ``` ## 7.配置ObjectStorage ObjectStorage是一个统称(包含百度云bos、腾讯云cos、阿里云oss、华为云obs),此模板为简化各个厂商不同的sdk配置,特此优化为统一sdk。 #### 1.引入依赖 在pom.xml文件中引入对应服务商的对象存储依赖,参数如下(以腾讯cos为例,代码179-184行): ```xml com.qcloud cos_api 5.5.7 ``` #### 2.更新yaml配置文件 更新src/main/resources目录下application.yml文件内配置object-storage(代码50-54行)参数。参考如下: ```yaml # 对象存储配置 object-storage: accessKeyId: yourAccessKeyId accessKeySecret: yourAccessKeySecret upload-endpoint: yourEndpoint download-endpoint: yourEndpoint bucketName: yourBucketName ``` #### 3.ObjectStorage继承对应厂商对象存储类 更新com.springboot.framework.model目录下三个ObjectStorage开头的类,参考如下(以ObjectStorageClient为例): ```java /** * 1.继承对应厂商对象存储客户机类(extends 对应厂商Client) * 2.ObjectStorageObject与ObjectStorageObjectMetadata类也如此即可。 */ public class ObjectStorageClient extends COSClient { /** * 自定义构造方法(腾讯云COS) */ public ObjectStorageClient(String secretId, String secretKey, String endpoint) { this(new BasicCOSCredentials(secretId, secretKey), new ClientConfig(new Region(endpoint))); } public ObjectStorageClient(COSCredentials cred, ClientConfig clientConfig) { super(cred, clientConfig); } public ObjectStorageClient(COSCredentialsProvider credProvider, ClientConfig clientConfig) { super(credProvider, clientConfig); } } ``` #### 4.使用文件上传接口 文件上传接口类为FileUploadController,完成配置后,直接调用即可,返回的url即对应云服务商返回的文件url。 ## 8.进阶配置 * Aop(切面):参考目录com.springboot.framework.aop下AdviceAop类。 * Transactional(事务):参考目录com.springboot.framework.service.impl下AdminServiceImpl类。 * Scheduled(定时器):参考目录com.springboot.framework.service.impl下AdminServiceImpl类。 * Interceptor(拦截器):参考目录com.springboot.framework.interceptor下AdminServiceImpl类。 ## 9.高级配置 已移除 ## 10.关于 第4版:2022年11月25日。升级至Java17,spring boot 2.7.6。去除大量依赖,最小化安装。 第3版:2021年1月1日。更新到了spring2.4.1,优化语法和各类依赖。 第2版:更新时间为2019年8月18日。更新了spring2.0,且加入大量依赖,完全企业级开发环境。 第1版:发布于2019年2月份。~~使用此模板前请先导入数据库,目录下springboot2019.sql文件(旧)。~~ ~~若要用于个人学习或商用,请删除数据库中除sys_admin以外的所有数据表,以免干扰个人的使用。~~ 欢迎各位使用此模板学习或是开发,或提交分支参与此模板的优化。 #### 如果你想联系我 * 邮箱: 641655770@qq.com * QQ: 641655770 * 微信: 641655770