一个小而美的低代码全栈开发平台,一键生成后端api接口+前端页面代码+在线接口文档,节省50%的前后端开发的工作量。基于springboot +mybatis+spring security+vue 技术栈

Overview

YOMA

[toc]

一个小而美的低代码全栈开发平台,一键生成后端api接口+前端页面代码+在线接口文档,节省50%的前后端开发的工作量,平台代码100%开源。平台适用于企业信息化、政务、中小型互联网等项目

平台采用前后端分离架构,基于如下流行的开源框架,易上手+便于后期维护

后端:https://github.com/msh01/yoma

spring boot + jwt +spring security + mybatis +swagger + spring data redis + spring data mongo

接入的SDK有:阿里云短信、极光推送、华为推送

前端:https://github.com/msh01/yoma-web

vue +element ui + axios+vuex + vue router

开发工具:

IDEA+Git+Navicat+XShell+Notepad++

快速开始

把项目源码克隆到本地,然后执行如下步骤

数据库等中间件安装+数据库的初始化

以下安装方式基于docker。当然了,如果你不擅长docker,也可以跳过下面的说明,采用传统方式安装,方法请自行百度。)

  • mysql+redis + rocketmq 等中间件的安装,基于docker compose 一个启动命令搞定;

  • 这些中间件可以安装在本地也可以安装在服务器端。安装前请确保你本地安装的有docker desktop或者服务器端安装的有docker compose

  • 找到项目目录中的启动模板文件docker-compose.yml, 在此文件所在的目录执行命令(可以按需安装,模板文件中某些服务,比如 Gitlab、MongoDB、nexus、 如果用不到则可以注释掉)

# 启动模板下中编排的所有docker服务。(本地不存在镜像则自动从远程拉取,过程可能较慢)
docker-compose up -d 
# -d 参数代表容器服务后台运行,避免窗口关闭后容器服务自动挂掉。如果你想看到启动的细节,则可把-d参数去掉
# 更多的docker compose命令,比如重启、移除、监控请参考https://www.runoob.com/docker/docker-compose.html
  • 用Navicat连接上刚刚安装成功的MySQL,并创建名称为yoma的数据库。在此数据库下执行init.sql,完成数据库的初始化

配置后端开发环境

  • 后端项目打包编译基于jdk8+maven,两者可自动百度安装
  • 把后端项目yoma导入到IDEA里面,IDEA会自动下载项目所需的依赖并自动构建,过程可能需要10分钟。另外为了避免报错,IDEA需要安装lombok插件
  • mysql连接、redis连接等配置信息并没有直接写死在spring boot 的application.yml 等配置文件中,而是直接在application.yml 中读取本机系统环境变量。你问为什么要多此一举?当然是为了防止不小心把敏感信息提交到远程仓库,造成泄密啊!!!配置环境变量的步骤
    • 找到项目中的setEnviromentvariableForYoma.bat,里面把脚本中的账户密码连接信息改成你自己的
    • 用管理员权限运行此bat脚本,即可一步配置完成环境变量
    • 配置完成后记得把IDEA重启下,
  • 找到YomaBootApplication入口类,点击图标,选择debug启动即可。如果启动过程中没有报出任何错误日志,则代表后端服务启动成功

配置前端开发环境

  • 前端项目编译打包基于npm 或者yarn. 请确保你本地安装的有node.js 。

    #   设置npm淘宝镜像源 ,加快安装各种包的速度
    npm config set registry https://registry.npm.taobao.org

  • 在前端项目yoma-web的根目录执行如下命令,安装前端项目所依赖的各种包

    # 命令安装没有任何报错则代表安装成功
    npm install 
    # npm如果安装报错的情况下可以尝试用yarn安装。yarn安装命令如下
    # npm install --global yarn
    # 通过yarn安装所有所需依赖
    # yarn install  
  • 把前端项目导入到IDEA里面,找到package.json 文件中的"dev": "vue-cli-service serve",点击左侧的三角箭头,选择debug dev 即可完成启动。启动过程中没有任何报错信息,并自动打开登录页,则代表启动成功,

  • 后台登录的账户密码为 admin / 123456

生成的代码说明

  • 针对某表,一般会生成如下六个后端代码文件(分别对应标准mvc架构中的controller、service、dao、mappe.xml、entity、queryDTO )和两个前端代码文件(一个vue文件一个js文件)
  • 注意:entity并不是jpa中标准意义上的entity,仅仅是用作接收页面增加、编辑的请求参数和返回查询结果集。queryDTO 用作接受列表查询的参数,比如like、==、between
  • 把生成的代码分别拷贝到对应的包下即可
  • 小窍门:@AnonymousAccess注解加在某个controller内部某方法上代表开启此接口的匿名访问,不会被权限验证拦截。为了方便调试,可以在开发的时候加上,上线前移除
  • 前端代码拷贝时,注意目录。因为配置菜单路由时会用到

后端部署

打包并把打好后jar包上传到服务器(可借助xftp或者winscp)

在后端项目的根目录执行 mvn package 命令,打好的jar包在yoma-boot模块的target目录下

上传到服务器的某个目录下,本人的jar包放置的绝对路径如下。后面的启动脚本里面的路径要和jar包的绝对路径一一对应

# 测试环境jar包的路径
/software/apps/test/yikong-boot-0.0.1-SNAPSHOT.jar
# 生产环境jar包的路径
/software/apps/prod/yikong-boot-0.0.1-SNAPSHOT.jar

通过自动化脚本进行启动、重启、开机自启

常用的启动、重启、开机自启等自动化脚本已经放在的项目的autoshell目录下。用工具把此脚本传输到服务器上,本人将自动化脚本放在了服务器的/software/autoShell/ 目录下,不同的脚本,有不同的功能。

请用chmod + xx.sh 为以下脚本赋予执行权限

# 每间隔10分钟执行一次,检测到后端服务关闭掉则自动重启
autoRestartApp.sh
# 手动启动或者重启服务
restartApp.sh
# 开机自启脚本
severStartUp.sh

运行日志查看

# 测试环境查看实时日志 末尾的时间换成当前时间
tail -f /software/logs/test/yoma-boot/yoma-boot.2020-10-08.10.log
# 生产环境查看实时日志 末尾的时间换成当前时间
tail -f /software/logs/prod/yoma-boot/yoma-boot.2020-08-29.02.log

前端部署

修改env.production文件

修改其中的VUE_APP_BASE_API和VUE_APP_WS_API为生产环境中的实际地址

打包

npm run build:prod

打包完成后会在根目录生成 dist 文件夹,我们需要将他上传到服务器中

Nginx 配置

nginx/conf/nginx.conf 添加配置

(默认History 模式的配置)

server
    {
        listen 80;
        server_name 域名/外网IP;
        index index.html;
        root  /software/frontend/yoma/dist;  #dist上传的路径
        # 避免访问出现 404 错误
        location / {
          try_files $uri $uri/ @router;
          index  index.html;
        }
        location @router {
          rewrite ^.*$ /index.html last;
        }  
    } 

最后记得重启nginx

开发计划

当前版本 v1.00

V 1.0.0 完成以下目标:

  1. 自动生成前后端代码,实现低代码开发的目标。面向后台系统居多的企业信息化项目、政务项目、中小型互联网项目
  2. 管理后台基本实现所有表的CRUD操作;
  3. 后端服务能够对参数进行检验。
  4. 文档优化(待完成)

V 1.5.0 完成以下目标:

  • 系统数据库和反向生成的目标数据库区分开,更加灵活

V 2.0.0 完成以下目标:

  1. flowable工作流引擎的接入,并与项目原有的账户角色打通。(flowable衍生自activiti,和后者是同一个作者)
  2. 基于此平台衍生出一个物联网平台的脚手架出来,涉及到mqtt、opcua等协议支持,多mqtt broker等

v 3.0.0

推出微服务版本的yoma-cloud, 整合spring cloud+k8s

进阶阅读

(以下文章对应的示例已经在项目中得到体现,文章待后续补充)

  • Intellij IDEA配置优化最佳实践
  • 基于spring boot的maven 多模块的聚合继承
  • maven依赖重复导入导致bean被实例化两次无法启动的问题排查
  • spring boot整合swagger,并支持自动导出排版优美的PDF接口文档
  • spring boot整合fastdfs
  • 通过spring data mongo 来实现对mongodb 的复杂的分组聚合查询
  • Java8 localDateTime在spring boot应用中的全局日期格式化
  • spring boot应用对响应体进行全局封装,方便统一前后端交互的数据格式
  • spring boot应用对全局异常做拦截并包装响应体(无论实际错误是什么,给前端返回的http状态码应该始终为200,而不是500,400之类的)
  • 基于easypoi实现对复杂排版格式的excel的导出
  • spring boot+spring security+jwt实现前后端认证和鉴权
  • 基于@Aspect切面来实现对用户操作日志的自动记录
  • idea调试vue应用或者react应用的技巧
  • element ui的file-upload组件配合spring boot实现文件上传和下载
  • spring boot+logback实现按日期生成日志文件+自动删除超过30天的+日志级别(以及为什么日志文件没有自动切割的问题)
  • java表达式引擎的整合
  • 基于责任链模式实现对复杂场景的处理
  • rocketmq踩空总结:同一个java服务在不同环境的消费组名称必须保证不同,否则rocketmq会采用负载均衡策略进行消费,只有33%的概率会被当前服务消费成功
  • spring boot整合极光推送
  • spring boot整合华为推送

致谢

本项目基于或参考以下项目:

  1. eladmin

项目介绍:基于spring boot + spring data jpa + vue +element 的开发平台

参考部分:代码生成逻辑和认证鉴权

  1. vue-element-admin

    项目介绍: 一个基于Vue和Element的后台集成方案

    项目参考:布局和组建封装

  2. jeesite

    项目介绍:基于(Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE)的开发框架

    项目参考:优雅简练的基于泛型的增删改查的封装

问题反馈

  • 开发者有问题或者好的建议可以用Issues反馈交流,请给出详细信息
  • 在开发交流群中应讨论开发、业务和合作问题
  • 如果真的需要微信群里提问,请在提问前先完成以下过程:
    • 请阅读提问的智慧
    • 请百度或谷歌相关技术;
    • 请查看相关技术的官方文档,例如微信小程序的官方文档;
    • 请提问前尽可能做一些DEBUG或者思考分析,然后提问时给出详细的错误相关信息以及个人对问题的理解。

License

Apache License Version 2.0

You might also like...

Spring Boot & MongoDB Login and Registration example with JWT, Spring Security, Spring Data MongoDB

Spring Boot & MongoDB Login and Registration example with JWT, Spring Security, Spring Data MongoDB

Spring Boot Login and Registration example with MongoDB Build a Spring Boot Auth with HttpOnly Cookie, JWT, Spring Security and Spring Data MongoDB. Y

Dec 30, 2022

Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login example with Spring Security, MySQL and JWT Appropriate Flow for User Login and Registration with JWT Spring Boot Rest Api Architect

Jan 5, 2023

Spring Boot JWT Authentication example with Spring Security & Spring Data JPA

Spring Boot JWT Authentication example with Spring Security & Spring Data JPA

Jan 26, 2022

Spring for GraphQL demo project with a Vue frontend.

Spring Books - Hello GraphQL This is a demo project that will introduce you to [https://spring.io/projects/spring-graphql](Spring for GraphQL). The Sp

Dec 2, 2022

mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

mall 友情提示 快速体验项目:在线访问地址。 全套学习教程:《mall学习教程》。 微服务版本:基于Spring Cloud Hoxton & Alibaba的项目:mall-swarm。 专属学习路线:学习不走弯路,整理了套非常不错的《mall专属学习路线》。 项目交流:想要加群交流项目的朋友

Jan 4, 2023

【咕泡学院实战项目】-基于SpringBoot+Dubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearch

【咕泡学院实战项目】-基于SpringBoot+Dubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearch

咕泡商城- 微服务架构实战 咕泡商城是咕泡学院 Java架构课程中,帮助学员对于技术更好落地的一个实战项目,项目基于springboot2.1.6.RELEASE+Dubbo2.7.3 来构建微服务。 业务模块划分,尽量贴合互联网公司的架构体系。所以,除了业务本身的复杂度不是很高之外,整体的架构基本

Dec 26, 2022

:racehorse:基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统

:racehorse:基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统

系统介绍 本系统是使用SpringBoot开发的高并发限时抢购秒杀系统,除了实现基本的登录、查看商品列表、秒杀、下单等功能,项目中还针对高并发情况实现了系统缓存、降级和限流。 开发工具 IntelliJ IDEA + Navicat + Sublime Text3 + Git + Chrome 压测

Dec 27, 2022

😎基于SpringBoot+MyBatis进行前后端开发的个人博客网站,优化了许多功能模块,版本不断维护中。(期末项目/毕业设计/新手推荐)

 😎基于SpringBoot+MyBatis进行前后端开发的个人博客网站,优化了许多功能模块,版本不断维护中。(期末项目/毕业设计/新手推荐)

Spring-Blog 框架:Springboot 数据库持久层:Mybatis 文章评论插件:Valine 分页插件:PageHelper 后台UI框架:X-admin框架,即LayUI框架 数据库连接池:hikari 数据库:MySQL 日志:Log4J 后台配置: properties 缓存实

Jan 5, 2023

mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm 友情提示 快速体验项目:在线访问地址。 全套学习教程:《mall学习教程》。 Spring Cloud全套教程:《SpringCloud学习教程》。 专属学习路线:学习不走弯路,整理了套非常不错的《mall专属学习路线》。 项目交流:想要加群交流项目的朋友,可以加入mall项目

Jan 3, 2023
Owner
Shihao Ma
programer/product manager/literature lover
Shihao Ma
开源论坛、问答系统,现有功能提问、回复、通知、最新、最热、消除零回复功能。功能持续更新中…… 技术栈 Spring、Spring Boot、MyBatis、MySQL/H2、Bootstrap

码问社区 在线演示地址 www.mawen.co 功能列表 开源论坛、问答系统,现有功能提问、回复、通知、最新、最热、消除零回复功能。功能持续更新中…… 技术栈 技术 链接 Spring Boot http://projects.spring.io/spring-boot/#quick-start

小匠 2.3k Dec 30, 2022
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
参考 DDD/Clean Architecture 设计理念,整合 Spring Boot/Spring Security/Mybatis Plus/Vavr 的 Spring Realworld 应用案例

Demo · 更多项目 · 参考资料 ms-spring-ddd-examples Unified Domain-driven Layered Architecture for MicroService Apps,试图探索一套切实可行的应用架构规范,可以复制、可以理解、可以落地、可以控制复杂性的指导

王下邀月熊 19 Sep 23, 2022
w-blog后端部分,基于springboot、mybatis、mysq···的一个简单博客后端程序

w-blog 描述 一个后端使用Spring Boot 2.x、前台使用nuxtJs、后台使用vue的个人博客 简介 链接 Gitee链接: api: https://gitee.com/windsnowli/w-blog-api 前台: https://gitee.com/windsnowli/v

null 13 Jun 1, 2022
🎧 Vue + SpringBoot + MyBatis 音乐网站

?? Vue + SpringBoot + MyBatis 音乐网站

尹宏伟 3.4k Dec 31, 2022
🦄 开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。

Echo — 开源社区系统 项目上线到服务器之后可能会出现各种各样的 BUG,比如 Elasticsearch 服务启动失败导致搜索模块不可用,但是在本地运行是完全没问题的,所以各位小伙伴可以放心下载部署。 ?? 项目简介 Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java Web

小牛肉 434 Jan 7, 2023
【多模块微服务脚手架平台——Ancba】前后端分离架构SpringBoot 2.x、SpringCloud、SpringAdmin、Spring Security、Mybatis-plus、(Shiro)、JWT、Feign、Nacos、Knif4j等。

Ancba 打造Blog.Core项目的SpringBoot微服务版,但是更强大 ?? Ancba (Another New CLI By Alacrity) 另一个全新的敏捷脚手架(单体/模块化/微服务都可支持)。 核心知识点与进度 ?? 在 ..../resources/application-

ansonzhang 35 Nov 29, 2022
springboot 框架与其它组件结合如 jpa、mybatis、websocket、security、shiro、cache等

致歉 由于自己懒以及身体对issuse 解决的不及时。请大家以后提issuse 的时候写清楚 模块名 比如“springboot-SpringSecurity4” 和问题,我会抽时间抓紧解决。 springboot-SpringSecurity0 包含两部分代码: 第一是 博客 springboot

abel 5.9k Jan 5, 2023