日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)

發(fā)布時間:2025/3/20 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
點擊上方?好好學(xué)java?,選擇?星標?公眾號重磅資訊,干貨,第一時間送達 今日推薦:推薦19個github超牛逼項目!個人原創(chuàng)100W +訪問量博客:點擊前往,查看更多

作者:zheng

gitee.com/shuzheng/zheng/blob/master/README.md

前言

zheng項目不僅僅是一個開發(fā)架構(gòu),而是努力打造一套從 前端模板 - 基礎(chǔ)框架 - 分布式架構(gòu) - 開源項目 - 持續(xù)集成 - 自動化部署 - 系統(tǒng)監(jiān)測 - 無縫升級 的全方位J2EE企業(yè)級開發(fā)解決方案。

項目介紹

基于Spring+SpringMVC+Mybatis分布式敏捷開發(fā)系統(tǒng)架構(gòu),提供整套公共微服務(wù)服務(wù)模塊:內(nèi)容管理、支付中心、用戶管理(包括第三方)、微信平臺、存儲系統(tǒng)、配置中心、日志分析、任務(wù)和通知等,支持服務(wù)治理、監(jiān)控和追蹤,努力為中小型企業(yè)打造全方位J2EE企業(yè)級開發(fā)解決方案。

組織結(jié)構(gòu)

zheng ├──?zheng-common?--?SSM框架公共模塊 ├──?zheng-admin?--?后臺管理模板 ├──?zheng-ui?--?前臺thymeleaf模板[端口:1000] ├──?zheng-config?--?配置中心[端口:1001] ├──?zheng-upms?--?用戶權(quán)限管理系統(tǒng) |????├──?zheng-upms-common?--?upms系統(tǒng)公共模塊 |????├──?zheng-upms-dao?--?代碼生成模塊,無需開發(fā) |????├──?zheng-upms-client?--?集成upms依賴包,提供單點認證、授權(quán)、統(tǒng)一會話管理 |????├──?zheng-upms-rpc-api?--?rpc接口包 |????├──?zheng-upms-rpc-service?--?rpc服務(wù)提供者 |????└──?zheng-upms-server?--?用戶權(quán)限系統(tǒng)及SSO服務(wù)端[端口:1111] ├──?zheng-cms?--?內(nèi)容管理系統(tǒng) |????├──?zheng-cms-common?--?cms系統(tǒng)公共模塊 |????├──?zheng-cms-dao?--?代碼生成模塊,無需開發(fā) |????├──?zheng-cms-rpc-api?--?rpc接口包 |????├──?zheng-cms-rpc-service?--?rpc服務(wù)提供者 |????├──?zheng-cms-search?--?搜索服務(wù)[端口:2221] |????├──?zheng-cms-admin?--?后臺管理[端口:2222] |????├──?zheng-cms-job?--?消息隊列、任務(wù)調(diào)度等[端口:2223] |????└──?zheng-cms-web?--?網(wǎng)站前臺[端口:2224] ├──?zheng-pay?--?支付系統(tǒng) |????├──?zheng-pay-common?--?pay系統(tǒng)公共模塊 |????├──?zheng-pay-dao?--?代碼生成模塊,無需開發(fā) |????├──?zheng-pay-rpc-api?--?rpc接口包 |????├──?zheng-pay-rpc-service?--?rpc服務(wù)提供者 |????├──?zheng-pay-sdk?--?開發(fā)工具包 |????├──?zheng-pay-admin?--?后臺管理[端口:3331] |????└──?zheng-pay-web?--?演示示例[端口:3332] ├──?zheng-ucenter?--?用戶系統(tǒng)(包括第三方登錄) |????├──?zheng-ucenter-common?--?ucenter系統(tǒng)公共模塊 |????├──?zheng-ucenter-dao?--?代碼生成模塊,無需開發(fā) |????├──?zheng-ucenter-rpc-api?--?rpc接口包 |????├──?zheng-ucenter-rpc-service?--?rpc服務(wù)提供者 |????└──?zheng-ucenter-web?--?網(wǎng)站前臺[端口:4441] ├──?zheng-wechat?--?微信系統(tǒng) |????├──?zheng-wechat-mp?--?微信公眾號管理系統(tǒng) |????|????├──?zheng-wechat-mp-dao?--?代碼生成模塊,無需開發(fā) |????|????├──?zheng-wechat-mp-service?--?業(yè)務(wù)邏輯 |????|????└──?zheng-wechat-mp-admin?--?后臺管理[端口:5551] |????└──?zheng-ucenter-app?--?微信小程序后臺 ├──?zheng-api?--?API接口總線系統(tǒng) |????├──?zheng-api-common?--?api系統(tǒng)公共模塊 |????├──?zheng-api-rpc-api?--?rpc接口包 |????├──?zheng-api-rpc-service?--?rpc服務(wù)提供者 |????└──?zheng-api-server?--?api系統(tǒng)服務(wù)端[端口:6666] ├──?zheng-oss?--?對象存儲系統(tǒng) |????├──?zheng-oss-sdk?--?開發(fā)工具包 |????├──?zheng-oss-web?--?前臺接口[端口:7771] |????└──?zheng-oss-admin?--?后臺管理[端口:7772] ├──?zheng-message?--?實時通知系統(tǒng) |????├──?zheng-message-sdk?--?開發(fā)工具包 |????├──?zheng-message-server?--?服務(wù)端[端口:8881,SocketIO端口:8882] |????└──?zheng-message-client?--?客戶端 ├──?zheng-shop?--?電子商務(wù)系統(tǒng) └──?zheng-demo?--?示例模塊(包含一些示例代碼等)├──?zheng-demo-rpc-api?--?rpc接口包├──?zheng-demo-rpc-service?--?rpc服務(wù)提供者└──?zheng-demo-web?--?演示示例[端口:9999]

技術(shù)選型

后端技術(shù):

技術(shù)名稱官網(wǎng)
Spring Framework容器http://projects.spring.io/spring-framework/
SpringMVCMVC框架http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc
Apache Shiro安全框架http://shiro.apache.org/
Spring session分布式Session管理http://projects.spring.io/spring-session/
MyBatisORM框架http://www.mybatis.org/mybatis-3/zh/index.html
MyBatis Generator代碼生成http://www.mybatis.org/generator/index.html
PageHelperMyBatis物理分頁插件http://git.oschina.net/free/Mybatis_PageHelper
Druid數(shù)據(jù)庫連接池https://github.com/alibaba/druid
FluentValidator校驗框架https://github.com/neoremind/fluent-validator
Thymeleaf模板引擎http://www.thymeleaf.org/
Velocity模板引擎http://velocity.apache.org/
ZooKeeper分布式協(xié)調(diào)服務(wù)http://zookeeper.apache.org/
Dubbo分布式服務(wù)框架http://dubbo.io/
TBSchedule & elastic-job分布式調(diào)度框架https://github.com/dangdangdotcom/elastic-job
Redis分布式緩存數(shù)據(jù)庫https://redis.io/
Solr & Elasticsearch分布式全文搜索引擎http://lucene.apache.org/solr/ https://www.elastic.co/
Quartz作業(yè)調(diào)度框架http://www.quartz-scheduler.org/
Ehcache進程內(nèi)緩存框架http://www.ehcache.org/
ActiveMQ消息隊列http://activemq.apache.org/
JStorm實時流式計算框架http://jstorm.io/
FastDFS分布式文件系統(tǒng)https://github.com/happyfish100/fastdfs
Log4J日志組件http://logging.apache.org/log4j/1.2/
Swagger2接口測試框架http://swagger.io/
sequence分布式高效ID生產(chǎn)http://git.oschina.net/yu120/sequence
AliOSS & Qiniu & QcloudCOS云存儲https://www.aliyun.com/product/oss/ http://www.qiniu.com/ https://www.qcloud.com/product/cos
Protobuf & json數(shù)據(jù)序列化https://github.com/google/protobuf
Jenkins持續(xù)集成工具https://jenkins.io/index.html
Maven項目構(gòu)建管理http://maven.apache.org/
Netty-socketio實時推送https://github.com/mrniko/netty-socketio

前端技術(shù):

技術(shù)名稱官網(wǎng)
jQuery函式庫http://jquery.com/
Bootstrap前端框架http://getbootstrap.com/
Bootstrap-tableBootstrap數(shù)據(jù)表格http://bootstrap-table.wenzhixin.net.cn/
Font-awesome字體圖標http://fontawesome.io/
material-design-iconic-font字體圖標https://github.com/zavoloklom/material-design-iconic-font
Waves點擊效果插件https://github.com/fians/Waves
zTree樹插件http://www.treejs.cn/v3/
Select2選擇框插件https://github.com/select2/select2
jquery-confirm彈出窗口插件https://github.com/craftpip/jquery-confirm
jQuery EasyUI基于jQuery的UI插件集合體http://www.jeasyui.com
React界面構(gòu)建框架https://github.com/facebook/react
Editor.mdMarkdown編輯器https://github.com/pandao/editor.md
zhengAdmin后臺管理系統(tǒng)模板https://github.com/shuzheng/zhengAdmin
autoMail郵箱地址自動補全插件https://github.com/shuzheng/autoMail
zheng.jprogress.js加載進度條插件https://github.com/shuzheng/zheng.jprogress.js
zheng.jtotop.js返回頂部插件https://github.com/shuzheng/zheng.jtotop.js
socket.io.jsSocketIO插件https://socket.io/

架構(gòu)圖

架構(gòu)圖

模塊依賴

模塊依賴

模塊介紹

zheng-common

Spring+SpringMVC+Mybatis框架集成公共模塊,包括公共配置、MybatisGenerator擴展插件、通用BaseService、工具類等。

zheng-admin

基于bootstrap實現(xiàn)的響應(yīng)式Material Design風格的通用后臺管理系統(tǒng),zheng項目所有后臺系統(tǒng)都是使用該模塊界面作為前端展示。

zheng-ui

各個子系統(tǒng)前臺thymeleaf模板,前端資源模塊,使用nginx代理,實現(xiàn)動靜分離。

zheng-upms

本系統(tǒng)是基于RBAC授權(quán)和基于用戶授權(quán)的細粒度權(quán)限控制通用平臺,并提供單點登錄、會話管理和日志管理。接入的系統(tǒng)可自由定義組織、角色、權(quán)限、資源等。用戶權(quán)限=所擁有角色權(quán)限合集+用戶加權(quán)限-用戶減權(quán)限,優(yōu)先級:用戶減權(quán)限>用戶加權(quán)限>角色權(quán)限

zheng-oss

文件存儲系統(tǒng),提供四種方案:

  • 阿里云 OSS

  • 騰訊云 COS

  • 七牛云

  • 本地分布式存儲

阿里云OSS

zheng-api

服務(wù)網(wǎng)關(guān),對外暴露統(tǒng)一規(guī)范的接口和包裝響應(yīng)結(jié)果,包括各個子系統(tǒng)的交互接口、對外開放接口、開發(fā)加密接口、接口文檔等服務(wù),可在該模塊支持驗簽、鑒權(quán)、路由、限流、監(jiān)控、容錯、日志等功能。示例圖:

API網(wǎng)關(guān)

zheng-cms

內(nèi)容管理系統(tǒng):支持多標簽、多類目、強大評論的內(nèi)容管理,有基本單頁展示,菜單管理,系統(tǒng)設(shè)置等功能。

zheng-pay

  • 一站式支付解決方案,統(tǒng)一下單接口,支持支付寶、微信、網(wǎng)銀等多種支付方式。不涉及業(yè)務(wù)的純粹的支付平臺。

  • 統(tǒng)一下單(統(tǒng)一下單接口、統(tǒng)一掃碼)、訂單管理、數(shù)據(jù)分析、財務(wù)報表、商戶管理、渠道管理、對賬系統(tǒng)、系統(tǒng)監(jiān)控。

統(tǒng)一掃碼支付

zheng-ucenter

通用用戶管理系統(tǒng), 實現(xiàn)最常用的用戶注冊、登錄、資料管理、個人中心、第三方登錄等基本需求,支持擴展二次開發(fā)。

zheng-wechat-mp

微信公眾號管理平臺,除實現(xiàn)官網(wǎng)后臺自動回復(fù)、菜單管理、素材管理、用戶管理、消息群發(fā)等基礎(chǔ)功能外,還有二維碼推廣、營銷活動、微網(wǎng)站、會員卡、優(yōu)惠券等。

zheng-wechat-app

微信小程序后臺

zheng-message

基于Netty實現(xiàn)SocketIO的實時推送系統(tǒng)。支持命名空間、二進制數(shù)據(jù)、SSL、ACK等功能。

搜索Java知音公眾號,回復(fù)“后端面試”,送你一份Java面試題寶典.pdf

環(huán)境搭建(QQ群內(nèi)有“zheng環(huán)境搭建和系統(tǒng)部署文檔.doc”)

開發(fā)工具:

  • MySql: 數(shù)據(jù)庫

  • jetty: 開發(fā)服務(wù)器

  • Tomcat: 應(yīng)用服務(wù)器

  • SVN|Git: 版本管理

  • Nginx: 反向代理服務(wù)器

  • Varnish: HTTP加速器

  • IntelliJ IDEA: 開發(fā)IDE

  • PowerDesigner: 建模工具

  • Navicat for MySQL: 數(shù)據(jù)庫客戶端

開發(fā)環(huán)境:

  • Jdk7+

  • Mysql5.5+

  • Redis

  • Zookeeper

  • ActiveMQ

  • Dubbo-admin

  • Dubbo-monitor

工具安裝

環(huán)境搭建和系統(tǒng)部署文檔(作者:小兵,QQ群共享提供下載)

資源下載

  • JDK7 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html[1]

  • Maven http://maven.apache.org/download.cgi[2]

  • Redis https://redis.io/download[3]

  • ActiveMQ http://activemq.apache.org/download-archives.html[4]

  • ZooKeeper http://www.apache.org/dyn/closer.cgi/zookeeper/[5]

  • Dubbo http://dubbo.io/Download-zh.htm[6]

  • Elastic Stack https://www.elastic.co/downloads[7]

  • Nginx http://nginx.org/en/download.html[8]

  • Jenkins http://updates.jenkins-ci.org/download/war/[9]

  • dubbo-admin-2.5.3 http://download.csdn.net/detail/shuzheng5201314/9733652[10]

  • dubbo-admin-2.5.4-SNAPSHOT-jdk8 http://download.csdn.net/detail/shuzheng5201314/9733657[11]

開發(fā)指南:

  • 1、本機安裝Jdk7、Mysql、Redis、Zookeeper、ActiveMQ并啟動相關(guān)服務(wù),使用默認配置默認端口即可

  • 2、克隆源代碼到本地并打開,推薦使用IntelliJ IDEA,本地編譯并安裝到本地maven倉庫

修改本地Host

  • 127.0.0.1 ui.zhangshuzheng.cn

  • 127.0.0.1 upms.zhangshuzheng.cn

  • 127.0.0.1 cms.zhangshuzheng.cn

  • 127.0.0.1 pay.zhangshuzheng.cn

  • 127.0.0.1 ucenter.zhangshuzheng.cn

  • 127.0.0.1 wechat.zhangshuzheng.cn

  • 127.0.0.1 api.zhangshuzheng.cn

  • 127.0.0.1 oss.zhangshuzheng.cn

  • 127.0.0.1 config.zhangshuzheng.cn

  • 127.0.0.1 zkserver

  • 127.0.0.1 rdserver

  • 127.0.0.1 dbserver

  • 127.0.0.1 mqserver

編譯流程

maven編譯安裝zheng/pom.xml文件即可

啟動順序(后臺)

準備工作

  • 新建zheng數(shù)據(jù)庫,導(dǎo)入project-datamodel文件夾下的zheng.sql

  • 修改各dao模塊和rpc-service模塊的redis.properties、jdbc.properties、generator.properties數(shù)據(jù)庫連接等配置信息,其中master.redis.password、master.jdbc.password、slave.jdbc.password、generator.jdbc.password密碼值使用了AES加密,請使用com.zheng.common.util.AESUtil工具類修改這些值

  • 啟動Zookeeper、Redis、ActiveMQ、Nginx(配置文件參考project-tools/nginx下的*.conf文件)

zheng-upms

  • 首先啟動 zheng-upms-rpc-service(直接運行src目錄下的ZhengUpmsRpcServiceApplication#main方法啟動) => zheng-upms-server(jetty),然后按需啟動對應(yīng)子系統(tǒng)xxx的zheng-xxx-rpc-service(main方法) => zheng-xxx-webapp(jetty)

啟動演示
  • 訪問 http://upms.zhangshuzheng.cn:1111/[12],子系統(tǒng)菜單已經(jīng)配置到zheng-upms權(quán)限中,不用直接訪問子系統(tǒng),默認帳號密碼:admin/123456

  • 登錄成功后,可在右上角切換已注冊系統(tǒng)訪問

zheng-cms

  • zheng-cms-admin:啟動ActiveMQ-啟動 => 啟動zheng-rpc-service => 啟動zheng-cms-admin

  • zheng-cms-web:啟動nginx代理zheng-ui靜態(tài)資源,配置文件可參考 nginx.conf

zheng-oss

  • 首先啟動zheng-oss-web服務(wù)

  • 開發(fā)階段,如果zheng-oss-web沒有公網(wǎng)域名,推薦使用ngrok內(nèi)網(wǎng)穿透工具,為開發(fā)環(huán)境提供公網(wǎng)域名,實現(xiàn)上傳回調(diào)

  • 啟動nginx代理zheng-ui靜態(tài)資源

開發(fā)演示(QQ群內(nèi)有“zheng十分鐘視頻:從檢出到啟動.wmv”)

  • 創(chuàng)建數(shù)據(jù)表(建議使用PowerDesigner)

  • 直接運行對應(yīng)項目dao模塊中的generator.main(),可自動生成單表的CRUD功能和對應(yīng)的model、example、mapper、service代碼

    • selectByExampleWithBLOBsForStartPage()

    • selectByExampleForStartPage()

    • selectByExampleWithBLOBsForOffsetPage()

    • selectByExampleForOffsetPage()

    • 生成的model和example均已實現(xiàn)Serializable接口,支持分布式

    • 已包含抽象類BaseServiceImpl,只需要繼承抽象類并傳入泛型參數(shù),即可默認實現(xiàn)mapper接口所有方法,特殊需求直接擴展即可

    • BaseServiceImpl默認已實現(xiàn)四種根據(jù)條件分頁接口

    • BaseServiceImpl方法根據(jù)讀寫操作自動切換主從數(shù)據(jù)源,繼承的擴展接口,可手動通過DynamicDataSource.setDataSource(DataSourceEnum.XXX.getName())指定數(shù)據(jù)源

  • 啟動流程:優(yōu)先rcp-service服務(wù)提供者,再啟動其他webapp

  • 擴展流程:可擴展和拆分rpc-api和rpc-service模塊,可按微服務(wù)拆分或場景拆分

部署方式(QQ群內(nèi)有“zheng十分鐘視頻:從打包到linux服務(wù)器部署.wmv”)

  • war包項目:使用tomcat等web容器啟動

  • rpc-service服務(wù)提供者jar包:將打包后的zheng-xxx-rpc-service-assembly.tar.gz文件解壓,使用bin目錄的管理腳本運行即可,支持優(yōu)雅停機。

框架規(guī)范約定

約定優(yōu)于配置(convention over configuration),此框架約定了很多編程規(guī)范,下面一一列舉:

  • service類,需要在叫名service的包下,并以Service結(jié)尾,如CmsArticleServiceImpl

  • controller類,需要在以controller結(jié)尾的包下,類名以Controller結(jié)尾,如CmsArticleController.java,并繼承BaseController

  • spring task類,需要在叫名task的包下,并以Task結(jié)尾,如TestTask.java

  • mapper.xml,需要在名叫mapper的包下,并以Mapper.xml結(jié)尾,如CmsArticleMapper.xml

  • mapper接口,需要在名叫mapper的包下,并以Mapper結(jié)尾,如CmsArticleMapper.java

  • model實體類,需要在名叫model的包下,命名規(guī)則為數(shù)據(jù)表轉(zhuǎn)駝峰規(guī)則,如CmsArticle.java

  • spring配置文件,命名規(guī)則為applicationContext-*.xml

  • 類名:首字母大寫駝峰規(guī)則;方法名:首字母小寫駝峰規(guī)則;常量:全大寫;變量:首字母小寫駝峰規(guī)則,盡量非縮寫

  • springmvc配置加到對應(yīng)模塊的springMVC-servlet.xml文件里

  • 配置文件放到src/main/resources目錄下

  • 靜態(tài)資源文件放到src/main/webapp/resources目錄下

  • jsp文件,需要在/WEB-INF/jsp目錄下

  • RequestMapping和返回物理試圖路徑的url盡量寫全路徑,如:@RequestMapping("/manage")、return "/manage/index"

  • RequestMapping指定method

  • 模塊命名為項目-子項目-業(yè)務(wù),如zheng-cms-admin

  • 數(shù)據(jù)表命名為:子系統(tǒng)_表,如cms_article

  • 更多規(guī)范,參考[[阿里巴巴Java開發(fā)手冊] http://git.oschina.net/shuzheng/zheng/attach_files

演示地址

演示地址:http://upms.zhangshuzheng.cn/[13]

預(yù)覽圖

????

數(shù)據(jù)模型

數(shù)據(jù)庫模型

拓撲圖

拓撲圖

項目地址

https://gitee.com/shuzheng/zheng/

推薦文章
  • 面試官問:前后端分離項目,有什么優(yōu)缺點?我說:沒

  • 2020 年騰訊新增 20 億行代碼,鵝廠第一編程語言還是它

  • 通俗講解分布式鎖,看完不懂算我輸

  • 寫博客能月入10K?

  • 一款基于 Spring Boot 的現(xiàn)代化社區(qū)(論壇/問答/社交網(wǎng)絡(luò)/博客)

更多項目源碼
  • 這或許是最美的Vue+Element開源后臺管理UI

  • 推薦一款高顏值的 Spring Boot 快速開發(fā)框架

  • 一款基于 Spring Boot 的現(xiàn)代化社區(qū)(論壇/問答/社交網(wǎng)絡(luò)/博客)

  • 13K點贊都基于 Vue+Spring 前后端分離管理系統(tǒng)ELAdmin,大愛

  • 想接私活時薪再翻一倍,建議根據(jù)這幾個開源的SpringBoot項目

總結(jié)

以上是生活随笔為你收集整理的基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。