乐趣区

关于java:还在从零开始搭建项目推荐一款高颜值的前后端分离脚手架

从零开始搭建我的项目,没有好用的脚手架怎么行!最近发现一款高颜值的前后端拆散脚手架sa-plus,自带代码生成器,可一键生成前端、后端、API 文档代码,举荐给大家!

SpringBoot 实战电商我的项目 mall(50k+star)地址:https://github.com/macrozheng/mall

sa-plus 简介

一款基于 SpringBoot 的疾速开发框架,内置代码生成器。

我的项目特点:

  • 集成罕用开发性能,包含文件上传、角色受权、全局异样解决、Redis 控制台、API 日志统计等。
  • 内置代码生成器,高自动化代码生成,可一键生成后端、前端和 API 文档代码。
  • 通过给表增加正文来生成代码,数据库表建好了,我的项目也就开发一半了。

我的项目架构

sa-plus 前后端应用的技术栈还是十分支流的,上面咱们来看下。

应用技术栈

  • 后端技术栈:MySql 5.7、SpringBoot、Mybatis-Plus、Druid、PageHelper、Redis、Sa-Token、Lombok、Hutool、FastJson
  • 前端技术栈:Vue、Element-Ui、WangEditor、Jquery、Layer、Swiper、Echarts

模块介绍

  • sp-server:SpringBoot 后端代码。
  • sp-admin:Vue 管理系统前端代码。
  • sp-apidoc:Docsify API 接口文档代码。
  • sp-generate:代码生成器,可生成后端、前端、API 文档。
  • sp-devdoc:sa-plus 本地文档。
  • doc:其它文件,寄存 SQL 脚本。

疾速开始

sp-serversp-adminsp-apidoc为 sa-plus 的次要我的项目模块,咱们先把它们启动起来。

sp-server

  • 先在 MySql 中创立 sp-dev 数据库,导入我的项目 doc 目录下的 sa-plus.sql 脚本,导入胜利后将生成如下表;

  • sp-server 模块导入到 IDEA 中,导入胜利后我的项目构造如下;

  • 批改我的项目的配置文件application-dev.yml,将 MySql 和 Redis 配置批改为你本人的连贯配置;
spring: 
    # 数据源配置
    datasource: 
        type: com.alibaba.druid.pool.DruidDataSource
        url: jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
        username: root
        password: root

    # redis 配置 
    redis:
        # Redis 数据库索引(默认为 0)database: 1
        # Redis 服务器地址
        host: 127.0.0.1
        # Redis 服务器连贯端口
        port: 6379
        # Redis 服务器连贯明码(默认为空)# password: 
        # 连贯超时工夫(毫秒)timeout: 5000ms
  • 运行启动类 SpServerApplicationmain方向,至尔后端服务启动胜利。
2021-08-09 16:46:00.478   INFO  -->  Initializing ExecutorService 'applicationTaskExecutor'
____ ____    ___ ____ _  _ ____ _  _ 
[__  |__| __  |  |  | |_/  |___ |\ | 
___] |  |     |  |__| | _ |___ | | 
DevDoc:http://sa-token.dev33.cn (v1.24.0)
GitHub:https://github.com/dromara/sa-token
2021-08-09 16:46:00.744   INFO  -->  Initializing ExecutorService 'taskScheduler'
2021-08-09 16:46:00.778   INFO  -->  Starting ProtocolHandler ["http-nio-8099"]
2021-08-09 16:46:00.792   INFO  -->  Tomcat started on port(s): 8099 (http) with context path ''
2021-08-09 16:46:00.802   INFO  -->  Started SpServerApplication in 3.871 seconds (JVM running for 4.797)

------------- sa-plus (dev) 启动胜利 --by 2021-08-09 16:46:00 -------------

sp-admin

  • sp-admin 模块导入到 IDEA 中,导入胜利后我的项目构造如下;

  • 关上 index.html 页面,点击右上角按钮运行到浏览器即可;

  • 应用默认账号密码登录后,即可拜访 sa-plus 的首页,界面还是挺炫酷的;

  • 咱们能够稍稍体验下 sa-plus 的根底性能,比方 Redis 控制台 性能,能够查看 Redis 状态和治理 Redis 中的数据;

  • 还有 API 申请日志 性能,能够查看 API 申请记录和申请耗时;

  • 还有权限治理中的 角色治理 性能,能够创立角色并给角色调配权限;

  • 还有权限治理中的 菜单治理 ,其实咱们能够发现sa-plus 中的菜单和权限是绑定在一起的,而菜单是从前端的路由中获取的,给角色调配了菜单即调配了菜单下的权限,这样做的话想做到接口级权限就比拟麻烦了;

  • 还有权限治理中的 用户治理,能够治理用户信息。

sp-apidoc

  • sp-apidoc 模块导入到 IDEA 中,导入胜利后我的项目构造如下;

  • 关上 index.html 页面,点击右上角按钮运行到浏览器即可,此时咱们能够发现 API 文档中还没有任何内容。

代码生成器

应用代码生成器,能够依据数据库表间接生成前端、后端及 API 文档代码,让咱们来体验下它有何神奇之处。

  • sp-generate 模块导入到 IDEA 中,导入胜利后我的项目构造如下;

  • 而后往 MySql 中导入测试数据,导入我的项目 doc 目录下的 test-data.sql 脚本,导入胜利后新增如下表;

  • 接下来批改 SpGenerateApplication 中的 MySql 连贯配置和代码生成目录配置;
@SqlFlySetup
@SpringBootApplication
public class SpGenerateApplication {
   
   // 间接运行代码生成器
   public static void main(String[] args) {

        // 启动 springboot   
        SpringApplication.run(SpGenerateApplication.class, args);


        // ===================================  设置连贯信息  =================================== 
        FlyConfig config = new FlyConfig();
        config.setDriverClassName("com.mysql.jdbc.Driver");
        config.setUrl("jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
        config.setUsername("root");
        config.setPassword("root");
        config.setPrintSql(true);        // 是否打印 sql  
        FlyObjects.setConfig(config);    // 注入到框架中


        // ===================================  一些全局设置  =================================== 
        GenCfgManager.cfg
                .setProjectPath("D:/developer/demo/sa-plus/")    // 总我的项目地址 (生成代码的门路) 
                .setServerProjectName("sp-server")                // 服务端 - 项目名称 
//         .setServerProjectName("sp-com/sp-core")          // 服务端 - 项目名称 (sp-com 多模块版填此格局)
                .setCodePath("src/main/java/")                    // 服务端代码 - 寄存门路 
                .setPackagePath("com.pj.project")                // 服务端代码 - 总包名 
                .setPackage_utils("com.pj.utils.sg.*")            // 服务端代码 - util 类包地址 
                .setAuthor("macrozheng");                        // 服务端代码 - 代码作者
    }
}
  • 而后运行启动类 SpGenerateApplicationmain办法生成代码,运行胜利后,sp-serverproject 包下会生成后端代码;

  • sp-adminsa-html 目录下会生成前端代码,还会在 menu-list.js 中追加菜单信息;

  • sp-apidocproject 目录也下会生成 API 文档代码;

  • 从新运行前后端代码后,咱们临时还无奈看到新增的菜单,还须要给角色调配权限才能够查看;

  • 之后咱们能够看到,对于商品表来说,列表页面和增加页面曾经给咱们生成好了;

  • 其实 sa-plus 是通过解析数据库表中的正文来生成代码的,咱们能够看下商品表的 SQL 语句,其中有很多蕴含 [] 的正文,sa-plus就是依据这些规定来生成代码的;
CREATE TABLE `ser_goods` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录 id [num no-add]',
  `name` varchar(200) DEFAULT NULL COMMENT '商品名称',
  `avatar` varchar(512) DEFAULT NULL COMMENT '商品头像 [img]',
  `image_list` varchar(2048) DEFAULT NULL COMMENT '轮播图片 [img-list]',
  `content` text COMMENT '图文介绍 [f]',
  `money` int(11) DEFAULT '0' COMMENT '商品价格 [num]',
  `type_id` bigint(20) DEFAULT NULL COMMENT '所属分类 [num]',
  `stock_count` int(11) DEFAULT '0' COMMENT '残余库存 [num]',
  `status` int(11) DEFAULT '1' COMMENT '商品状态 (1= 上架,2= 下架) [j]',
  `create_time` datetime DEFAULT NULL COMMENT '创立日期 [date-create]',
  `update_time` datetime DEFAULT NULL COMMENT '更新日期 [date-update]',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1005 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='商品表 \n[table icon=el-icon-apple]\n[fk-s js=(type_id=sys_type.id), show=name. 所属分类, drop]\n';
  • 这里的规定比拟多,大家能够自行对照下表查看;

  • 最初咱们再来看下曾经生成好的 API 文档,商品表的 CRUD 接口文档都有了,十分具体;

  • 而且 API 文档中还提供了接口测试性能,是不是很贴心!

总结

通过下面的一波实际,咱们能够发现 sa-plus 的确是个有意思的框架。不仅提供了我的项目的根底性能,还提供了代码生成器,能够一键生成前后端及 API 文档代码,大大提高了开发效率。然而没有一种代码生成器是万能的,简单的代码还是须要手写。sa-plus 的权限性能把菜单和权限绑定在了一起,应用起来不太灵便,还是能够改良下的。

参考资料

官网文档:http://sa-plus.dev33.cn/

我的项目地址

https://gitee.com/click33/sa-…

本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!

退出移动版