Spring + SpringMVC + Mybatis dağıtılmış çevik geliştirme sistemi mimarisine dayalı

Önsöz

Zheng projesi sadece bir geliştirme mimarisi değil, aynı zamanda ön uç şablonlar-temel çerçeve dağıtılmış mimari-açık kaynak projeleri-sürekli entegrasyon-otomatikleştirilmiş dağıtım-sistem izleme-sorunsuz yükseltmelerden eksiksiz bir J2EE kurumsal seviye geliştirme çözümleri yelpazesi oluşturmaya çalışıyor .

Proje Tanıtımı

Spring + SpringMVC + Mybatis dağıtılmış çevik geliştirme sistemi mimarisine dayalı olarak, eksiksiz bir genel mikro hizmet servis modülleri seti sağlar: içerik yönetimi, ödeme merkezi, kullanıcı yönetimi (üçüncü taraflar dahil), WeChat platformu, depolama sistemi, konfigürasyon merkezi, günlük analizi, görevler ve bildirimler Hizmet yönetişimini, izlemeyi ve izlemeyi desteklemek ve küçük ve orta ölçekli işletmeler için kapsamlı bir J2EE kurumsal düzeyde geliştirme çözümü oluşturmaya çalışmak.

Örgütsel yapı

zheng zheng-common - SSM çerçevesi ortak modülü zheng-admin - arka plan yönetimi şablonu zheng-ui - ön timeleaf şablonu zheng-config - Yapılandırma Merkezi zheng-upms - kullanıcı yetki yönetim sistemi | zheng-upms-common - upms sistemi ortak modülü | zheng-upms-dao - geliştirme olmadan kod oluşturma modülü | zheng-upms-client - Upms bağımlılık paketini entegre edin, tek noktadan kimlik doğrulama, yetkilendirme, birleşik oturum yönetimi sağlayın | zheng-upms-rpc-api - rpc arabirim paketi | zheng-upms-rpc-service - rpc servis sağlayıcı | zheng-upms-server - kullanıcı yetki sistemi ve SSO sunucusu zheng-cms - içerik yönetim sistemi | zheng-cms-common - cms sistemi ortak modülü | zheng-cms-dao - geliştirme olmadan kod oluşturma modülü | zheng-cms-rpc-api - rpc arabirim paketi | zheng-cms-rpc-service - rpc servis sağlayıcı | zheng-cms-search - arama hizmeti | zheng-cms-admin - arka plan yönetimi | zheng-cms-job - mesaj kuyruğu, görev zamanlaması vb. | zheng-cms-web - web sitesi ön büro zheng-pay - ödeme sistemi | zheng-pay-common - genel ödeme sistemi modülü | zheng-pay-dao - geliştirme olmadan kod üretme modülü | zheng-pay-rpc-api - rpc arayüz paketi | zheng-pay-rpc-service - rpc servis sağlayıcı | zheng-pay-sdk - geliştirme kiti | zheng-pay-admin - arka plan yönetimi | zheng-pay-web - Demo örneği zheng-ucenter - Kullanıcı sistemi (üçüncü taraf oturum açma dahil) | zheng-ucenter-common - ucenter system ortak modülü | zheng-ucenter-dao - geliştirme olmadan kod üretme modülü | zheng-ucenter-rpc-api - rpc arabirim paketi | zheng-ucenter-rpc-service - rpc servis sağlayıcı | zheng-ucenter-web - web sitesi ön büro zheng-wechat - WeChat sistemi | zheng-wechat-mp - WeChat Resmi Hesap Yönetim Sistemi | | zheng-wechat-mp-dao - geliştirme olmadan kod oluşturma modülü | | zheng-wechat-mp-hizmeti - iş mantığı | | zheng-wechat-mp-admin - arka plan yönetimi | zheng-ucenter-app - WeChat uygulaması arka planı zheng-api - API arayüz veri yolu sistemi | zheng-api-common - api sistemi ortak modülü | zheng-api-rpc-api - rpc arayüz paketi | zheng-api-rpc-service - rpc servis sağlayıcı | zheng-api-server - api sistem sunucusu zheng-oss - Nesne depolama sistemi | zheng-oss-sdk - geliştirme kiti | zheng-oss-web - ön uç arabirimi | zheng-oss-admin - arka plan yönetimi zheng-mesajı - Gerçek zamanlı bildirim sistemi | zheng-message-sdk - geliştirme kiti | zheng-ileti-sunucusu - sunucu | zheng-mesaj-istemcisi - istemci zheng-shop - e-ticaret sistemi zheng-demo - örnek modül (bazı örnek kodlar vb. Dahil) zheng-demo-rpc-api - rpc arayüz paketi zheng-demo-rpc-service - rpc servis sağlayıcı zheng-demo-web - demo örneği

Teknik seçim

Arka uç teknolojisi:

Teknik ad resmi web sitesi Spring Framework kapsayıcısı framework Shiro security Çerçeve oturumu Dağıtılmış Oturum Yönetimi çerçevesi .htmlMyBatis Generator kod oluşturma fiziksel sayfalama eklentisi veritabanı bağlantı havuzu https://github.com/alibaba/druidFluentValidator Doğrulama çerçevesi https://github.com/neoremind/fluent-validatorThymeleaf şablon motoru şablon motoru dağıtılmış koordinasyon hizmeti http: // zookeeper.apache.org/Dubbo dağıtılmış hizmet çerçevesi ve elastik iş dağıtılmış zamanlama çerçevesi https://github.com/dangdangdotcom/elastic-jobRedis dağıtılmış önbellek veritabanı https: // redis .io / Solr ve Elasticsearch Dağıtılmış tam metin arama motoru https://www.elastic.co/Quartz iş planlama çerçevesi İşlem içi önbellek çerçevesi Q mesaj kuyruğu gerçek zamanlı akış bilgi işlem çerçevesi dağıtılmış dosya sistemi https://github.com/happyfish100/fastdfsLog4J günlük bileşeni http: // günlük kaydı .apache.org / log4j / 1.2 / Swagger2 arayüz test çerçevesi dağıtılmış verimli kimlik üretimi ve Qiniu ve QcloudCOS bulut depolama https: // www.aliyun.com/product/oss/ https://www.qcloud.com/product/cosProtobuf ve json veri serileştirme https://github.com/google/protobufJenkins devam ediyor Entegrasyon aracı https://jenkins.io/index.htmlMaven proje yapım yönetimi gerçek zamanlı itme https://github.com/mrniko/netty-socketio

Ön uç teknolojisi:

Teknik ad resmi web sitesi jQuery kitaplığı ön uç çerçevesi veri tablosu yazı tipi simgesi yazı tipi simgesi https://github.com/zavoloklom/material-design-iconic-fontWaves tıklama efekti eklentisi https://github.com/fians/WaveszTree ağaç eklentisi seçme kutusu eklentisi https://github.com/select2/select2jquery-confirm açılır pencere eklentisi https://github.com/craftpip/jquery-confirmjQuery EasyUI, jQuery UI tabanlı Eklenti koleksiyonu http: //www.jeasyui.comReact arayüz oluşturma çerçevesi https://github.com/facebook/reactEditor.mdMarkdown editörü https://github.com/pandao/editor.mdzhengAdmin arka plan yönetim sistemi şablonu https: / /github.com/shuzheng/zhengAdminautoMail e-posta adresi otomatik tamamlama eklentisi https://github.com/shuzheng/autoMailzheng.jprogress.js İlerleme çubuğu eklentisi yükleniyor https://github.com/shuzheng/zheng.jprogress.jszheng.jtotop .js en üst eklentiye dönüyor https://github.com/shuzheng/zheng.jtotop.jssocket.io.js SocketIO eklentisi https://socket.io/

Mimari diyagram

Modül bağımlılığı

Modül tanıtımı

zheng-common

Spring + SpringMVC + Mybatis çerçevesi, genel yapılandırma, MybatisGenerator eklenti eklentileri, genel BaseService, araç sınıfları vb. Dahil olmak üzere genel modülleri entegre eder.

zheng-admin

Bootstrap tarafından uygulanan duyarlı Materyal Tasarımı stiline dayalı genel bir arka uç yönetim sistemi. Zheng projesinin tüm arka uç sistemleri, bu modül arayüzünü bir ön uç ekranı olarak kullanır.

zheng-ui

Her alt sistemin ön uç timeleaf şablonu ve ön uç kaynak modülü, dinamik ayırma sağlamak için nginx proxy kullanır.

zheng-upms

Bu sistem, RBAC yetkilendirmesine ve kullanıcı yetkilendirmesine dayalı ayrıntılı yetki kontrolüne dayalı genel bir platformdur ve tek oturum açma, oturum yönetimi ve günlük yönetimi sağlar. Bağlı sistem organizasyonu, rolleri, izinleri, kaynakları vb. Serbestçe tanımlayabilir. Kullanıcı izni = tüm rollerin ve izinlerin toplanması + kullanıcı artı izinler-kullanıcı azaltılmış izinler, öncelik: kullanıcı izinleri azaltıldı > Kullanıcı artı izinler > Rol İzinleri

zheng-oss

Dosya depolama sistemi dört çözüm sunar:

  • Alibaba Bulut OSS
  • Tencent Bulut COS
  • Qiniu Bulut
  • Yerel dağıtılmış depolama

zheng-api

Çeşitli alt sistemlerin etkileşimli arabirimleri, açık arabirimler, şifreli arabirimlerin geliştirilmesi, arabirim belgeleri ve diğer hizmetler dahil olmak üzere birleşik standartlaştırılmış arabirimleri ve paketleme yanıt sonuçlarını ortaya çıkaran hizmet ağ geçidi Bu modül, imza doğrulamayı, kimlik doğrulamayı, yönlendirmeyi ve mevcut sınırlamayı destekleyebilir. , İzleme, hata toleransı, günlük ve diğer işlevler. örnek grafik:

zheng-cms

İçerik yönetim sistemi: Temel tek sayfa görüntüleme, menü yönetimi, sistem ayarları ve diğer işlevlerle birden çok etiketin, birden çok kategorinin ve güçlü yorumların içerik yönetimini destekler.

zheng-pay

  • Tek noktadan ödeme çözümü, birleşik sipariş arayüzü, Alipay, WeChat ve çevrimiçi bankacılık gibi birden çok ödeme yöntemini destekler. İş içermeyen saf bir ödeme platformu.
  • Birleşik sipariş (birleşik sipariş arayüzü, birleşik tarama kodu), sipariş yönetimi, veri analizi, mali tablolar, üye işyeri yönetimi, kanal yönetimi, mutabakat sistemi, sistem izleme.

zheng-ucenter

Evrensel kullanıcı yönetimi sistemi, en sık kullanılan kullanıcı kaydı, oturum açma, veri yönetimi, kişisel merkez, üçüncü taraf oturum açma ve diğer temel gereksinimleri gerçekleştirir ve genişletilmiş ikincil geliştirmeyi destekler.

zheng-wechat-mp

WeChat resmi hesap yönetimi platformu, resmi web sitesi arka plan otomatik yanıtlama, menü yönetimi, malzeme yönetimi, kullanıcı yönetimi ve toplu mesajlaşmanın temel işlevlerine ek olarak, QR kodu promosyonu, pazarlama etkinlikleri, mikrositeler, üyelik kartları, kuponlar vb. İçerir.

zheng-wechat-app

WeChat uygulaması arka planı

zheng-mesaj

Netty tabanlı gerçek zamanlı SocketIO itme sistemi. Ad alanı, ikili veri, SSL, ACK, vb. Gibi destek işlevleri.

Ortam oluşturma ("zheng ortam oluşturma ve sistem dağıtım belgesi.doc", QQ grubunda mevcuttur)

Geliştirme araçları:

  • MySql: veritabanı
  • iskele: geliştirme sunucusu
  • Tomcat: uygulama sunucusu
  • SVN | Git: sürüm yönetimi
  • Nginx: ters proxy sunucusu
  • Vernik: HTTP hızlandırıcı
  • IntelliJ IDEA: Geliştirme IDE
  • PowerDesigner: Modelleme aracı
  • MySQL için Navicat: veritabanı istemcisi

Geliştirme ortamı:

  • Jdk7 +
  • Mysql5.5 +
  • Redis
  • Hayvan bakıcısı
  • ActiveMQ
  • Dubbo-admin
  • Dubbo monitör

Alet kurulumu

Sistem belgelerini oluşturmak ve dağıtmak için ortam (Yazar: asker, QQ grup paylaşımı indirilebilir)

İndir

  • JDK7
  • Maven
  • Redis https://redis.io/download
  • ActiveMQ
  • ZooKeeper
  • Dubbo
  • Elastik Yığın https://www.elastic.co/downloads
  • Nginx
  • Jenkins
  • dubbo-admin-2.5.3
  • dubbo-admin-2.5.4-SNAPSHOT-jdk8
  • Daha fazla kaynak için lütfen QQ grubu ekleyin

Geliştirme kılavuzu:

  • 1. Bu makineye Jdk7, Mysql, Redis, Zookeeper, ActiveMQ yükleyin ve ilgili hizmetleri başlatın, sadece varsayılan yapılandırma varsayılan bağlantı noktasını kullanın
  • 2. Kaynak kodunu yerel olarak kopyalayın ve açın, IntelliJ IDEA önerilir, derleyin ve yerel olarak yerel maven deposuna kurun

Yerel ana bilgisayarı değiştirin

  • 127.0.0.1ui.zhangshuzheng.cn
  • 127.0.0.1upms.zhangshuzheng.cn
  • 127.0.0.1cms.zhangshuzheng.cn
  • 127.0.0.1pay.zhangshuzheng.cn
  • 127.0.0.1ucenter.zhangshuzheng.cn
  • 127.0.0.1wechat.zhangshuzheng.cn
  • 127.0.0.1api.zhangshuzheng.cn
  • 127.0.0.1oss.zhangshuzheng.cn
  • 127.0.0.1 config.zhangshuzheng.cn
  • 127.0.0.1zkserver
  • 127.0.0.1rdserver
  • 127.0.0.1dbserver
  • 127.0.0.1mqserver

Derleme süreci

Zheng / pom.xml dosyasını maven ile derleyin ve kurun

Sırayı başlat (arka plan)

Çalışmaya hazır

  • Yeni bir zheng veritabanı oluşturun ve proje-datamodel klasörü altında zheng.sql'yi içe aktarın
  • Master.redis.password, master.jdbc.password, slave.jdbc.password, generator.jdbc dahil her dao modülünün ve rpc-hizmet modülünün redis.properties, jdbc.properties, generator.properties veritabanı bağlantı yapılandırma bilgilerini değiştirin. Parola değeri AES şifrelemesini kullanır, bu değerleri değiştirmek için lütfen com.zheng.common.util.AESUtil araç sınıfını kullanın
  • Zookeeper, Redis, ActiveMQ, Nginx'i başlatın (yapılandırma dosyaları için project-tools / nginx altındaki * .conf dosyasına bakın)

zheng-upms

  • İlk olarak zheng-upms-rpc-hizmetini başlatın (doğrudan ZhengUpmsRpcServiceApplication # ana yöntemi src dizini altında başlatın) = > zheng-upms-server (iskele) ve ardından talep üzerine ilgili alt sistemin xxx zheng-xxx-rpc-hizmetini (ana yöntem) başlatın = > zheng-xxx-webapp (iskele)

  • Http://upms.zhangshuzheng.cn:1111/ adresini ziyaret edin, alt sistem menüsü zheng-upms yetkisine göre yapılandırılmıştır, alt sisteme doğrudan erişmeye gerek yoktur, varsayılan hesap şifresi: admin / 123456
  • Başarıyla giriş yaptıktan sonra sağ üst köşede kayıtlı sistem erişimine geçebilirsiniz.

zheng-cms

  • zheng-cms-admin: ActiveMQ-start'ı başlat = > Zheng-rpc-service = öğesini başlatın > Zheng-cms-admin'i başlatın
  • zheng-cms-web: nginx proxy zheng-ui statik kaynağını başlatın, yapılandırma dosyası nginx.conf'a başvurabilir

zheng-oss

  • İlk zheng-oss-web hizmetini başlatın
  • Geliştirme aşamasında, zheng-oss-web'in bir genel etki alanı adı yoksa, geliştirme ortamı için bir genel etki alanı adı sağlamak ve karşıya yükleme geri aramalarını uygulamak için ngrok intranet penetrasyon aracının kullanılması önerilir.
  • Nginx proxy zheng-ui statik kaynaklarını başlatın

Geliştirme gösterimi (QQ grubunda "on dakikalık zheng on dakikalık video: kullanıma alma işleminden start.wmv'ye" kadar)

  • Bir veri tablosu oluşturun (PowerDesigner önerilir)
  • Tek bir tablonun CRUD işlevini ve karşılık gelen modeli, örneğin, eşleyiciyi ve hizmet kodunu otomatik olarak oluşturmak için doğrudan ilgili projenin dao modülünde generator.main () öğesini çalıştırın
  • Hem üretilen model hem de örnek, Serileştirilebilir arabirimi uyguladı ve dağıtılmış desteği
  • Soyut sınıf BaseServiceImpl dahil edilmiştir. Varsayılan olarak eşleyici arayüzünün tüm yöntemlerini uygulamak için yalnızca soyut sınıfı miras almanız ve genel parametreleri iletmeniz gerekir ve bunu özel ihtiyaçlar için doğrudan genişletebilirsiniz.
  • BaseServiceImpl, varsayılan olarak koşullara göre dört sayfalama arabirimi uyguladı
  • selectByExampleWithBLOBsForStartPage ()
  • selectByExampleForStartPage ()
  • selectByExampleWithBLOBsForOffsetPage ()
  • selectByExampleForOffsetPage ()
  • BaseServiceImpl yöntemi, okuma ve yazma işlemlerine göre birincil ve ikincil veri kaynaklarını otomatik olarak değiştirir ve devralınan genişletilmiş arabirim, veri kaynağını DynamicDataSource.setDataSource (DataSourceEnum.XXX.getName ()) aracılığıyla manuel olarak belirleyebilir.
  • Başlangıç süreci: rcp servis sağlayıcısına öncelik verin, ardından diğer web uygulamalarını başlatın
  • Genişletme süreci: rpc-api ve rpc-servis modülleri genişletilebilir ve bölünebilir ve mikro hizmetler veya sahneler tarafından bölünebilir

Dağıtım yöntemi (QQ grubunda "on dakikalık Zheng videosu: paketlemeden linux sunucu deployment.wmv'ye" var)

  • Savaş paketi projesi: tomcat gibi bir web kapsayıcısı ile başlayın
  • rpc-service service provider jar paketi: paketlenmiş zheng-xxx-rpc-service-assembly.tar.gz dosyasını açın ve zarif kapatmayı destekleyen bin dizinindeki yönetim komut dosyasıyla çalıştırın.

Çerçeve Sözleşmesi

Konfigürasyon üzerine konvansiyon (konfigürasyon üzerinden konvansiyon), bu çerçeve birçok programlama spesifikasyonunu kabul eder, aşağıdakiler tek tek listelenmiştir:

-Hizmet sınıfının "service" adlı bir pakette olması ve "CmsArticleServiceImpl" gibi "Service" ile bitmesi gerekir - Denetleyici sınıfının "controller" ile biten pakette olması gerekir, sınıf adı "CmsArticleController.java" gibi Controller ile biter ve "BaseController" ı miras alır -Yay görev sınıfının "task" adlı bir pakette olması ve "TestTask.java" gibi "Task" ile bitmesi gerekir -mapper.xml, "mapper" adlı bir pakette olması gereken ve "Mapper.xml" ile biten "CmsArticleMapper.xml" -Mapper arayüzünün "mapper" adlı bir pakette olması ve "CmsArticleMapper.java" gibi "Mapper" ile bitmesi gerekir -Model varlık sınıfının "model" adlı pakette olması gerekir ve adlandırma kuralı, "CmsArticle.java" gibi veri tablosundan deve durumu kuralına kadardır. -Spring yapılandırma dosyası, adlandırma kuralı "applicationContext - *. Xml" şeklindedir. -Sınıf adı: ilk harf büyük deve durumu kuralı; yöntem adı: ilk harf küçük deve durumu kuralı; sabit: tümü büyük harf; değişken: ilk harf küçük harf deve durumu kuralı, kısaltılmamaya çalışın Springmvc yapılandırması, ilgili modülün `springMVC-servlet.xml` dosyasına eklendi -Yapılandırma dosyasını `src / main / resources` dizinine yerleştirin Statik kaynak dosyalarını `src / main / webapp / resources` dizinine yerleştirin -jsp dosyası, `/ WEB-INF / jsp` dizininde olmalıdır -``RequestMapping ("/ manage") "," return "/ manage / index" `gibi," RequestMapping "ve fiziksel yolu döndüren url'ye tam yolu yazmaya çalışın -`RequestMapping` belirtilen yöntem -Modül, "zheng-cms-admin" gibi "proje"-"alt proje"-"işletme" olarak adlandırılır -Veri tablosunun adı: "Subsystem`_`Table`, örneğin" cms_article " -Daha fazla özellik, referans
"NCT" "Paylaş" 190617 NCT127 GIF'in ve çıkartmaların yeni Superhuman versiyonu çok popüler
önceki
Honor 618, 40 şampiyonluk yükseltti, Honor 20 PRO'nun ilk satışı büyük bir başarı
Sonraki
"IT House Public Test Works" Roborock T4 Değerlendirme: 1699 LDS + yarı saydam tasarım
İki çocuğunun fotoğraflarını çekti ama büyülü bir dünya yarattı ve internette popüler oldu.
Japon tasarımcılar 2020 Tokyo Olimpiyatları'nı karşılamak için dünyanın bayraklarını erkek tanrılara dönüştürüyor ve Çin yakışıklı
Honor 618, 40 şampiyonluk yükseltti, Honor 20 PRO'nun ilk satışı büyük bir başarı
8 metrekare Japon sapkın daire, 4200 yuan kira, ancak insanlar hala yaşamak için acele ediyor
618 tam platform 3 saniyede 100 milyonu kırdı, Honor 20 PRO kamera amiral gemisi adını hak ediyor
Parlak bir hayatla prestijli bir okuldan mezun oldu ama 52 yaşındayken ölmek için başka ülkelere gitti ...
Momo risk kontrol sistemi statik kural motoru aswan
618 kurulum önerisi: RTX 2060 grafik kartı 5000 yuan için kullanılabilir
Hava fotoğraflarından 36 fotoğrafı geri getirdi ve dünya şaşkına döndü: Çin çok güzel.
"GOT7" "Paylaş" 190617 Duan Yien, konser sırasında bir hayranının suratından vuruldu, yıldızları akılcı bir şekilde kovalamayı unutmayın
AI ses kontrolü yeni bir çağ açar, kontrolü daha ilginç hale getirmek için uzaktan kumandayı çöpe atın
To Top