Web开发框架——Zheng
前言
zheng項目不僅僅是一個開發架構,而是努力打造一套從?前端模板?-?基礎框架?-?分布式架構?-?開源項目?-?持續集成?-?自動化部署-?系統監測?-?無縫升級?的全方位J2EE企業級開發解決方案。
項目介紹
基于Spring+SpringMVC+Mybatis分布式敏捷開發系統架構,提供整套公共微服務服務模塊:內容管理、支付中心、用戶管理(包括第三方)、微信平臺、存儲系統、配置中心、日志分析、任務和通知等,支持服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
組織結構
zheng ├── zheng-common -- SSM框架公共模塊 ├── zheng-admin -- 后臺管理模板 ├── zheng-ui -- 前臺thymeleaf模板[端口:1000] ├── zheng-config -- 配置中心[端口:1001] ├── zheng-upms -- 用戶權限管理系統 | ├── zheng-upms-common -- upms系統公共模塊 | ├── zheng-upms-dao -- 代碼生成模塊,無需開發 | ├── zheng-upms-client -- 集成upms依賴包,提供單點認證、授權、統一會話管理 | ├── zheng-upms-rpc-api -- rpc接口包 | ├── zheng-upms-rpc-service -- rpc服務提供者 | └── zheng-upms-server -- 用戶權限系統及SSO服務端[端口:1111] ├── zheng-cms -- 內容管理系統 | ├── zheng-cms-common -- cms系統公共模塊 | ├── zheng-cms-dao -- 代碼生成模塊,無需開發 | ├── zheng-cms-rpc-api -- rpc接口包 | ├── zheng-cms-rpc-service -- rpc服務提供者 | ├── zheng-cms-search -- 搜索服務[端口:2221] | ├── zheng-cms-admin -- 后臺管理[端口:2222] | ├── zheng-cms-job -- 消息隊列、任務調度等[端口:2223] | └── zheng-cms-web -- 網站前臺[端口:2224] ├── zheng-pay -- 支付系統 | ├── zheng-pay-common -- pay系統公共模塊 | ├── zheng-pay-dao -- 代碼生成模塊,無需開發 | ├── zheng-pay-rpc-api -- rpc接口包 | ├── zheng-pay-rpc-service -- rpc服務提供者 | ├── zheng-pay-sdk -- 開發工具包 | ├── zheng-pay-admin -- 后臺管理[端口:3331] | └── zheng-pay-web -- 演示示例[端口:3332] ├── zheng-ucenter -- 用戶系統(包括第三方登錄) | ├── zheng-ucenter-common -- ucenter系統公共模塊 | ├── zheng-ucenter-dao -- 代碼生成模塊,無需開發 | ├── zheng-ucenter-rpc-api -- rpc接口包 | ├── zheng-ucenter-rpc-service -- rpc服務提供者 | └── zheng-ucenter-web -- 網站前臺[端口:4441] ├── zheng-wechat -- 微信系統 | ├── zheng-wechat-mp -- 微信公眾號管理系統 | | ├── zheng-wechat-mp-dao -- 代碼生成模塊,無需開發 | | ├── zheng-wechat-mp-service -- 業務邏輯 | | └── zheng-wechat-mp-admin -- 后臺管理[端口:5551] | └── zheng-ucenter-app -- 微信小程序后臺 ├── zheng-api -- API接口總線系統 | ├── zheng-api-common -- api系統公共模塊 | ├── zheng-api-rpc-api -- rpc接口包 | ├── zheng-api-rpc-service -- rpc服務提供者 | └── zheng-api-server -- api系統服務端[端口:6666] ├── zheng-oss -- 對象存儲系統 | ├── zheng-oss-sdk -- 開發工具包 | ├── zheng-oss-web -- 前臺接口[端口:7771] | └── zheng-oss-admin -- 后臺管理[端口:7772] ├── zheng-shop -- 電子商務系統 └── zheng-demo -- 示例模塊(包含一些示例代碼等)├── zheng-demo-rpc-api -- rpc接口包├── zheng-demo-rpc-service -- rpc服務提供者└── zheng-demo-web -- 演示示例[端口:8888]
技術選型
后端技術:
| Spring Framework | 容器 | http://projects.spring.io/spring-framework/ |
| SpringMVC | MVC框架 | 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/ |
| MyBatis | ORM框架 | http://www.mybatis.org/mybatis-3/zh/index.html |
| MyBatis Generator | 代碼生成 | http://www.mybatis.org/generator/index.html |
| PageHelper | MyBatis物理分頁插件 | http://git.oschina.net/free/Mybatis_PageHelper |
| Druid | 數據庫連接池 | https://github.com/alibaba/druid |
| FluentValidator | 校驗框架 | https://github.com/neoremind/fluent-validator |
| Thymeleaf | 模板引擎 | http://www.thymeleaf.org/ |
| Velocity | 模板引擎 | http://velocity.apache.org/ |
| ZooKeeper | 分布式協調服務 | http://zookeeper.apache.org/ |
| Dubbo | 分布式服務框架 | http://dubbo.io/ |
| TBSchedule & elastic-job | 分布式調度框架 | https://github.com/dangdangdotcom/elastic-job |
| Redis | 分布式緩存數據庫 | https://redis.io/ |
| Solr & Elasticsearch | 分布式全文搜索引擎 | http://lucene.apache.org/solr/?https://www.elastic.co/ |
| Quartz | 作業調度框架 | http://www.quartz-scheduler.org/ |
| Ehcache | 進程內緩存框架 | http://www.ehcache.org/ |
| ActiveMQ | 消息隊列 | http://activemq.apache.org/ |
| JStorm | 實時流式計算框架 | http://jstorm.io/ |
| FastDFS | 分布式文件系統 | https://github.com/happyfish100/fastdfs |
| Log4J | 日志組件 | http://logging.apache.org/log4j/1.2/ |
| Swagger2 | 接口測試框架 | http://swagger.io/ |
| sequence | 分布式高效ID生產 | 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 | 數據序列化 | https://github.com/google/protobuf |
| Jenkins | 持續集成工具 | https://jenkins.io/index.html |
| Maven | 項目構建管理 | http://maven.apache.org/ |
前端技術:
| jQuery | 函式庫 | http://jquery.com/ |
| Bootstrap | 前端框架 | http://getbootstrap.com/ |
| Bootstrap-table | Bootstrap數據表格 | 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 | 界面構建框架 | https://github.com/facebook/react |
| Editor.md | Markdown編輯器 | https://github.com/pandao/editor.md |
| zhengAdmin | 后臺管理系統模板 | 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 |
架構圖
模塊依賴
模塊介紹
zheng-common
Spring+SpringMVC+Mybatis框架集成公共模塊,包括公共配置、MybatisGenerator擴展插件、通用BaseService、工具類等。
zheng-admin
基于bootstrap實現的響應式Material Design風格的通用后臺管理系統,zheng項目所有后臺系統都是使用該模塊界面作為前端展示。
zheng-ui
各個子系統前臺thymeleaf模板,前端資源模塊,使用nginx代理,實現動靜分離。
zheng-upms
本系統是基于RBAC授權和基于用戶授權的細粒度權限控制通用平臺,并提供單點登錄、會話管理和日志管理。接入的系統可自由定義組織、角色、權限、資源等。用戶權限=所擁有角色權限合集+用戶加權限-用戶減權限,優先級:用戶減權限>用戶加權限>角色權限
zheng-oss
文件存儲系統,提供四種方案:
- 阿里云?OSS
- 騰訊云?COS
- 七牛云
- 本地分布式存儲
zheng-api
服務網關,對外暴露統一規范的接口和包裝響應結果,包括各個子系統的交互接口、對外開放接口、開發加密接口、接口文檔等服務,可在該模塊支持驗簽、鑒權、路由、限流、監控、容錯、日志等功能。示例圖:
zheng-cms
內容管理系統:支持多標簽、多類目、強大評論的內容管理,有基本單頁展示,菜單管理,系統設置等功能。
zheng-pay
一站式支付解決方案,統一下單接口,支持支付寶、微信、網銀等多種支付方式。不涉及業務的純粹的支付平臺。
統一下單(統一下單接口、統一掃碼)、訂單管理、數據分析、財務報表、商戶管理、渠道管理、對賬系統、系統監控。
zheng-ucenter
通用用戶管理系統, 實現最常用的用戶注冊、登錄、資料管理、個人中心、第三方登錄等基本需求,支持擴展二次開發。
zheng-wechat-mp
微信公眾號管理平臺,除實現官網后臺自動回復、菜單管理、素材管理、用戶管理、消息群發等基礎功能外,還有二維碼推廣、營銷活動、微網站、會員卡、優惠券等。
zheng-wechat-app
微信小程序后臺
環境搭建(QQ群內有“zheng環境搭建和系統部署文檔.doc”)
開發工具:
- MySql: 數據庫
- jetty: 開發服務器
- Tomcat: 應用服務器
- SVN|Git: 版本管理
- Nginx: 反向代理服務器
- Varnish: HTTP加速器
- IntelliJ IDEA: 開發IDE
- PowerDesigner: 建模工具
- Navicat for MySQL: 數據庫客戶端
開發環境:
- Jdk7+
- Mysql5.5+
- Redis
- Zookeeper
- ActiveMQ
- Dubbo-admin
- Dubbo-monitor
工具安裝
環境搭建和系統部署文檔(作者:小兵,QQ群共享提供下載)
資源下載
- JDK7?http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
- Maven?http://maven.apache.org/download.cgi
- Redis?https://redis.io/download
- ActiveMQ?http://activemq.apache.org/download-archives.html
- ZooKeeper?http://www.apache.org/dyn/closer.cgi/zookeeper/
- Dubbo?http://dubbo.io/Download-zh.htm
- Elastic Stack?https://www.elastic.co/downloads
- Nginx?http://nginx.org/en/download.html
- Jenkins?http://updates.jenkins-ci.org/download/war/
- dubbo-admin-2.5.3?http://download.csdn.net/detail/shuzheng5201314/9733652
- dubbo-admin-2.5.4-SNAPSHOT-jdk8?http://download.csdn.net/detail/shuzheng5201314/9733657
- 更多資源請加QQ群
開發指南:
- 1、本機安裝Jdk7、Mysql、Redis、Zookeeper、ActiveMQ并啟動相關服務,使用默認配置默認端口即可
- 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數據庫,導入project-datamodel文件夾下的zheng.sql
修改各dao模塊和rpc-service模塊的redis.properties、jdbc.properties、generator.properties數據庫連接等配置信息,其中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),然后按需啟動對應子系統xxx的zheng-xxx-rpc-service(main方法) => zheng-xxx-webapp(jetty)
訪問?http://upms.zhangshuzheng.cn:1111/,子系統菜單已經配置到zheng-upms權限中,不用直接訪問子系統,默認帳號密碼:admin/123456
登錄成功后,可在右上角切換已注冊系統訪問
zheng-cms
zheng-cms-admin:啟動ActiveMQ-啟動 => 啟動zheng-rpc-service => 啟動zheng-cms-admin
zheng-cms-web:啟動nginx代理zheng-ui靜態資源,配置文件可參考?nginx.conf
zheng-oss
首先啟動zheng-oss-web服務
開發階段,如果zheng-oss-web沒有公網域名,推薦使用ngrok內網穿透工具,為開發環境提供公網域名,實現上傳回調
啟動nginx代理zheng-ui靜態資源
開發演示(QQ群內有“zheng十分鐘視頻:從檢出到啟動.wmv”)
創建數據表(建議使用PowerDesigner)
直接運行對應項目dao模塊中的generator.main(),可自動生成單表的CRUD功能和對應的model、example、mapper、service代碼
生成的model和example均已實現Serializable接口,支持分布式
已包含抽象類BaseServiceImpl,只需要繼承抽象類并傳入泛型參數,即可默認實現mapper接口所有方法,特殊需求直接擴展即可
BaseServiceImpl默認已實現四種根據條件分頁接口
selectByExampleWithBLOBsForStartPage()
selectByExampleForStartPage()
selectByExampleWithBLOBsForOffsetPage()
selectByExampleForOffsetPage()
BaseServiceImpl方法根據讀寫操作自動切換主從數據源,繼承的擴展接口,可手動通過DynamicDataSource.setDataSource(DataSourceEnum.XXX.getName())指定數據源
啟動流程:優先rcp-service服務提供者,再啟動其他webapp
擴展流程:可擴展和拆分rpc-api和rpc-service模塊,可按微服務拆分或場景拆分
部署方式(QQ群內有“zheng十分鐘視頻:從打包到linux服務器部署.wmv”)
war包項目:使用tomcat等web容器啟動
rpc-service服務提供者jar包:將打包后的zheng-xxx-rpc-service-assembly.tar.gz文件解壓,使用bin目錄的管理腳本運行即可,支持優雅停機。
框架規范約定
約定優于配置(convention over configuration),此框架約定了很多編程規范,下面一一列舉:
- service類,需要在叫名`service`的包下,并以`Service`結尾,如`CmsArticleServiceImpl` - controller類,需要在以`controller`結尾的包下,類名以Controller結尾,如`CmsArticleController.java`,并繼承`BaseController` - spring task類,需要在叫名`task`的包下,并以`Task`結尾,如`TestTask.java` - mapper.xml,需要在名叫`mapper`的包下,并以`Mapper.xml`結尾,如`CmsArticleMapper.xml` - mapper接口,需要在名叫`mapper`的包下,并以`Mapper`結尾,如`CmsArticleMapper.java` - model實體類,需要在名叫`model`的包下,命名規則為數據表轉駝峰規則,如`CmsArticle.java` - spring配置文件,命名規則為`applicationContext-*.xml` - 類名:首字母大寫駝峰規則;方法名:首字母小寫駝峰規則;常量:全大寫;變量:首字母小寫駝峰規則,盡量非縮寫 - springmvc配置加到對應模塊的`springMVC-servlet.xml`文件里 - 配置文件放到`src/main/resources`目錄下 - 靜態資源文件放到`src/main/webapp/resources`目錄下 - jsp文件,需要在`/WEB-INF/jsp`目錄下 - `RequestMapping`和返回物理試圖路徑的url盡量寫全路徑,如:`@RequestMapping("/manage")`、`return "/manage/index"` - `RequestMapping`指定method - 模塊命名為`項目`-`子項目`-`業務`,如`zheng-cms-admin` - 數據表命名為:`子系統`_`表`,如`cms_article` - 更多規范,參考[[阿里巴巴Java開發手冊] http://git.oschina.net/shuzheng/zheng/attach_files演示地址
演示地址:?http://upms.zhangshuzheng.cn/
預覽圖
數據模型
拓撲圖
開發進度
參與開發
首先謝謝大家支持,如果你希望參與開發,歡迎通過Github上fork本項目,并Pull Request您的commit。
常見問題
Eclipse下,dubbo找不到dubbo.xsd報錯,不影響使用,如果要解決,可參考?http://blog.csdn.net/gjldwz/article/details/50555922
報zheng-xxx.jar包找不到,請按照文檔編譯順序,將源代碼編譯并安裝到本地maven倉庫
zheng-cms-admin啟動卡住:因為沒有啟動activemq
zheng-upms-server訪問報session不存在:因為沒有啟動redis服務
界面沒有樣式:因為zheng-admin沒有編譯安裝到本地倉庫
linux下執行rpc-service腳本報“bin/bash^M 壞的解釋器”,使用sed -i 's/\r$//' filename刪除腳本中\r字符
附件
zheng相關博客
zheng-1:環境搭建及項目部署
zheng項目新建一個module學習學習
zheng項目系統簡單的分析記錄
zheng項目-從rpc-service開始!
進擊zheng項目zheng-umps-server
zheng環境搭建
讓zheng支持activiti工作流
讓zheng更完美地支持ajax提交的json數據
優秀文章和博客
創業互聯網公司如何搭建自己的技術框架
微服務實戰
單點登錄原理與簡單實現
ITeye論壇關于權限控制的討論
RBAC新解:基于資源的權限管理(Resource-Based Access Control)
網站架構經驗隨筆
支付系統架構
Spring整合JMS
跟我學Shiro目錄貼
跟我學SpringMVC目錄匯總貼
跟我學spring3 目錄貼
跟我學OpenResty(Nginx+Lua)開發目錄貼
Redis中文網
讀懂Redis并配置主從集群及高可用部署
Redis哨兵-實現Redis高可用
ELK(ElasticSearch, Logstash, Kibana)搭建實時日志分析平臺
Nginx基本功能極速入門
mybatis-genarator 自定義插件
Elasticsearch權威指南(中文版)
springMVC對簡單對象、Set、List、Map的數據綁定和常見問題.
如何細粒度地控制你的MyBatis二級緩存
Git 在團隊中的最佳實踐--如何正確使用Git Flow
做個男人,做個成熟的男人,做個有城府的男人
項目介紹
基于Spring+SpringMVC+Mybatis分布式敏捷開發系統架構,提供整套公共微服務服務模塊:內容管理、支付中心、用戶管理(包括第三方)、微信平臺、存儲系統、配置中心、日志分析、任務和通知等,支持服務治理、監控和追蹤,努力為中小型企業打造全方位J2EE企業級開發解決方案。
組織結構
技術選型
后端技術:
架構圖
模塊依賴
模塊介紹
zheng-common
Spring+SpringMVC+Mybatis框架集成公共模塊,包括公共配置、MybatisGenerator擴展插件、通用BaseService、工具類等。
zheng-admin
基于bootstrap實現的響應式Material Design風格的通用后臺管理系統,zheng項目所有后臺系統都是使用該模塊界面作為前端展示。
zheng-ui
各個子系統前臺thymeleaf模板,前端資源模塊,使用nginx代理,實現動靜分離。
zheng-upms
本系統是基于RBAC授權和基于用戶授權的細粒度權限控制通用平臺,并提供單點登錄、會話管理和日志管理。接入的系統可自由定義組織、角色、權限、資源等。用戶權限=所擁有角色權限合集+用戶加權限-用戶減權限,優先級:用戶減權限>用戶加權限>角色權限
zheng-oss
文件存儲系統,提供四種方案:
- 阿里云?OSS
- 騰訊云?COS
- 七牛云
- 本地分布式存儲
zheng-api
服務網關,對外暴露統一規范的接口和包裝響應結果,包括各個子系統的交互接口、對外開放接口、開發加密接口、接口文檔等服務,可在該模塊支持驗簽、鑒權、路由、限流、監控、容錯、日志等功能。示例圖:
zheng-cms
內容管理系統:支持多標簽、多類目、強大評論的內容管理,有基本單頁展示,菜單管理,系統設置等功能。
zheng-pay
一站式支付解決方案,統一下單接口,支持支付寶、微信、網銀等多種支付方式。不涉及業務的純粹的支付平臺。
統一下單(統一下單接口、統一掃碼)、訂單管理、數據分析、財務報表、商戶管理、渠道管理、對賬系統、系統監控。
zheng-ucenter
通用用戶管理系統, 實現最常用的用戶注冊、登錄、資料管理、個人中心、第三方登錄等基本需求,支持擴展二次開發。
zheng-wechat-mp
微信公眾號管理平臺,除實現官網后臺自動回復、菜單管理、素材管理、用戶管理、消息群發等基礎功能外,還有二維碼推廣、營銷活動、微網站、會員卡、優惠券等。
zheng-wechat-app
微信小程序后臺
環境搭建(QQ群內有“zheng環境搭建和系統部署文檔.doc”)
開發工具:
- MySql: 數據庫
- jetty: 開發服務器
- Tomcat: 應用服務器
- SVN|Git: 版本管理
- Nginx: 反向代理服務器
- Varnish: HTTP加速器
- IntelliJ IDEA: 開發IDE
- PowerDesigner: 建模工具
- Navicat for MySQL: 數據庫客戶端
開發環境:
- Jdk7+
- Mysql5.5+
- Redis
- Zookeeper
- ActiveMQ
- Dubbo-admin
- Dubbo-monitor
工具安裝
環境搭建和系統部署文檔(作者:小兵,QQ群共享提供下載)
資源下載
- JDK7?http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
- Maven?http://maven.apache.org/download.cgi
- Redis?https://redis.io/download
- ActiveMQ?http://activemq.apache.org/download-archives.html
- ZooKeeper?http://www.apache.org/dyn/closer.cgi/zookeeper/
- Dubbo?http://dubbo.io/Download-zh.htm
- Elastic Stack?https://www.elastic.co/downloads
- Nginx?http://nginx.org/en/download.html
- Jenkins?http://updates.jenkins-ci.org/download/war/
- dubbo-admin-2.5.3?http://download.csdn.net/detail/shuzheng5201314/9733652
- dubbo-admin-2.5.4-SNAPSHOT-jdk8?http://download.csdn.net/detail/shuzheng5201314/9733657
- 更多資源請加QQ群
開發指南:
- 1、本機安裝Jdk7、Mysql、Redis、Zookeeper、ActiveMQ并啟動相關服務,使用默認配置默認端口即可
- 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數據庫,導入project-datamodel文件夾下的zheng.sql
修改各dao模塊和rpc-service模塊的redis.properties、jdbc.properties、generator.properties數據庫連接等配置信息,其中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),然后按需啟動對應子系統xxx的zheng-xxx-rpc-service(main方法) => zheng-xxx-webapp(jetty)
訪問?http://upms.zhangshuzheng.cn:1111/,子系統菜單已經配置到zheng-upms權限中,不用直接訪問子系統,默認帳號密碼:admin/123456
登錄成功后,可在右上角切換已注冊系統訪問
zheng-cms
zheng-cms-admin:啟動ActiveMQ-啟動 => 啟動zheng-rpc-service => 啟動zheng-cms-admin
zheng-cms-web:啟動nginx代理zheng-ui靜態資源,配置文件可參考?nginx.conf
zheng-oss
首先啟動zheng-oss-web服務
開發階段,如果zheng-oss-web沒有公網域名,推薦使用ngrok內網穿透工具,為開發環境提供公網域名,實現上傳回調
啟動nginx代理zheng-ui靜態資源
開發演示(QQ群內有“zheng十分鐘視頻:從檢出到啟動.wmv”)
創建數據表(建議使用PowerDesigner)
直接運行對應項目dao模塊中的generator.main(),可自動生成單表的CRUD功能和對應的model、example、mapper、service代碼
生成的model和example均已實現Serializable接口,支持分布式
已包含抽象類BaseServiceImpl,只需要繼承抽象類并傳入泛型參數,即可默認實現mapper接口所有方法,特殊需求直接擴展即可
BaseServiceImpl默認已實現四種根據條件分頁接口
selectByExampleWithBLOBsForStartPage()
selectByExampleForStartPage()
selectByExampleWithBLOBsForOffsetPage()
selectByExampleForOffsetPage()
BaseServiceImpl方法根據讀寫操作自動切換主從數據源,繼承的擴展接口,可手動通過DynamicDataSource.setDataSource(DataSourceEnum.XXX.getName())指定數據源
啟動流程:優先rcp-service服務提供者,再啟動其他webapp
擴展流程:可擴展和拆分rpc-api和rpc-service模塊,可按微服務拆分或場景拆分
部署方式(QQ群內有“zheng十分鐘視頻:從打包到linux服務器部署.wmv”)
war包項目:使用tomcat等web容器啟動
rpc-service服務提供者jar包:將打包后的zheng-xxx-rpc-service-assembly.tar.gz文件解壓,使用bin目錄的管理腳本運行即可,支持優雅停機。
框架規范約定
約定優于配置(convention over configuration),此框架約定了很多編程規范,下面一一列舉:
- service類,需要在叫名`service`的包下,并以`Service`結尾,如`CmsArticleServiceImpl` - controller類,需要在以`controller`結尾的包下,類名以Controller結尾,如`CmsArticleController.java`,并繼承`BaseController` - spring task類,需要在叫名`task`的包下,并以`Task`結尾,如`TestTask.java` - mapper.xml,需要在名叫`mapper`的包下,并以`Mapper.xml`結尾,如`CmsArticleMapper.xml` - mapper接口,需要在名叫`mapper`的包下,并以`Mapper`結尾,如`CmsArticleMapper.java` - model實體類,需要在名叫`model`的包下,命名規則為數據表轉駝峰規則,如`CmsArticle.java` - spring配置文件,命名規則為`applicationContext-*.xml` - 類名:首字母大寫駝峰規則;方法名:首字母小寫駝峰規則;常量:全大寫;變量:首字母小寫駝峰規則,盡量非縮寫 - springmvc配置加到對應模塊的`springMVC-servlet.xml`文件里 - 配置文件放到`src/main/resources`目錄下 - 靜態資源文件放到`src/main/webapp/resources`目錄下 - jsp文件,需要在`/WEB-INF/jsp`目錄下 - `RequestMapping`和返回物理試圖路徑的url盡量寫全路徑,如:`@RequestMapping("/manage")`、`return "/manage/index"` - `RequestMapping`指定method - 模塊命名為`項目`-`子項目`-`業務`,如`zheng-cms-admin` - 數據表命名為:`子系統`_`表`,如`cms_article` - 更多規范,參考[[阿里巴巴Java開發手冊] http://git.oschina.net/shuzheng/zheng/attach_files演示地址
演示地址:?http://upms.zhangshuzheng.cn/
預覽圖
數據模型
拓撲圖
開發進度
參與開發
首先謝謝大家支持,如果你希望參與開發,歡迎通過Github上fork本項目,并Pull Request您的commit。
常見問題
Eclipse下,dubbo找不到dubbo.xsd報錯,不影響使用,如果要解決,可參考?http://blog.csdn.net/gjldwz/article/details/50555922
報zheng-xxx.jar包找不到,請按照文檔編譯順序,將源代碼編譯并安裝到本地maven倉庫
zheng-cms-admin啟動卡住:因為沒有啟動activemq
zheng-upms-server訪問報session不存在:因為沒有啟動redis服務
界面沒有樣式:因為zheng-admin沒有編譯安裝到本地倉庫
linux下執行rpc-service腳本報“bin/bash^M 壞的解釋器”,使用sed -i 's/\r$//' filename刪除腳本中\r字符
附件
zheng相關博客
zheng-1:環境搭建及項目部署
zheng項目新建一個module學習學習
zheng項目系統簡單的分析記錄
zheng項目-從rpc-service開始!
進擊zheng項目zheng-umps-server
zheng環境搭建
讓zheng支持activiti工作流
讓zheng更完美地支持ajax提交的json數據
優秀文章和博客
創業互聯網公司如何搭建自己的技術框架
微服務實戰
單點登錄原理與簡單實現
ITeye論壇關于權限控制的討論
RBAC新解:基于資源的權限管理(Resource-Based Access Control)
網站架構經驗隨筆
支付系統架構
Spring整合JMS
跟我學Shiro目錄貼
跟我學SpringMVC目錄匯總貼
跟我學spring3 目錄貼
跟我學OpenResty(Nginx+Lua)開發目錄貼
Redis中文網
讀懂Redis并配置主從集群及高可用部署
Redis哨兵-實現Redis高可用
ELK(ElasticSearch, Logstash, Kibana)搭建實時日志分析平臺
Nginx基本功能極速入門
mybatis-genarator 自定義插件
Elasticsearch權威指南(中文版)
springMVC對簡單對象、Set、List、Map的數據綁定和常見問題.
如何細粒度地控制你的MyBatis二級緩存
Git 在團隊中的最佳實踐--如何正確使用Git Flow
做個男人,做個成熟的男人,做個有城府的男人
總結
以上是生活随笔為你收集整理的Web开发框架——Zheng的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: undefined是什么意思啊
- 下一篇: C++char数据类型