日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

!!!使用Maven構(gòu)建 整合Dubbo+Zookeeper+SpringMVC+Spring+MyBatis支持分布式 高效便捷開發(fā)框架

 quasiceo 2018-08-04
logo

該項(xiàng)目是一整套整合 Dubbo+Zookeeper+SpringMVC+Spring+MyBatis 支持分布式的高效率便捷開發(fā)RPC框架,使開發(fā)人員更專注于業(yè)務(wù),達(dá)到面向業(yè)務(wù)開發(fā)。

項(xiàng)目使用 Maven 構(gòu)建,便于項(xiàng)目管理,可支持 Oracle、MySql 等主流數(shù)據(jù)庫。

項(xiàng)目模塊化分層明確,代碼規(guī)范,便于后期維護(hù)等工作。

前端展示界面采用基于 Boostrap 實(shí)現(xiàn)的響應(yīng)式布局,并集成了一系列的動(dòng)畫效果插件,整體界面簡潔、美觀大方并可優(yōu)雅的與后臺(tái)完成交互操作。

項(xiàng)目目標(biāo)是為中小型企業(yè)打造全方位的J2EE企業(yè)級開發(fā)解決方案,提高工作效率。

該項(xiàng)目是yan-demo單節(jié)點(diǎn)項(xiàng)目的升級版,支持分布式,持續(xù)更新中,敬請期待...

近期更新內(nèi)容

  • beta 1.0.0:項(xiàng)目整體改造,升級為RPC架構(gòu)。(注:若想查看非RPC版請移步至https:///micyo202/yan
  • beta 0.1.0:模塊優(yōu)化,刪除不必要的模塊,優(yōu)化代碼(模塊詳情參考:三、項(xiàng)目結(jié)構(gòu))
  • beta 0.0.5:前端添加ECharts,便于圖形化展示
  • beta 0.0.4:添加JMS(ActiveMQ)消息服務(wù)(目前僅測試方法,暫無業(yè)務(wù)流轉(zhuǎn),后期逐漸完善細(xì)化)
  • beta 0.0.3:添加Solr搜索引擎服務(wù)(基本的全文檢索功能,可根據(jù)實(shí)際需求情況進(jìn)行二次開發(fā),后期本人再逐漸完善)
  • beta 0.0.2:優(yōu)化整體代碼、添加更多注釋,結(jié)構(gòu)更清晰、代碼更易懂
  • beta 0.0.1:將原有yan-demo項(xiàng)目重構(gòu),保留原有功能,模塊拆分、優(yōu)化項(xiàng)目結(jié)構(gòu)

項(xiàng)目所需工具及版本 *

一、項(xiàng)目開發(fā)環(huán)境&工具(Environment&Tools)

  • MacOS Sierra / Windows 7
  • MySql 5.7
  • JDK 1.8
  • CentOS 7
  • IntelliJ IDEA 2017.2.5 / Eclipse 4.6.1
  • Navicat Premium 11.1.12
  • Maven 3.3.9
  • Jetty 9.4.6.v20170531 / Tomcat 9.0.1

二、技術(shù)選型(Technology)

1.服務(wù)端技術(shù)(Server)

名稱版本號網(wǎng)址
Spring Framework4.3.13.RELEASEhttp://projects./spring-framework/
Shiro1.4.0http://shiro.
AspectJ1.8.13http://www./aspectj/
MyBatis3.4.5http://www./mybatis-3/zh/index.html
MyBatis Generator1.3.5http://www./generator/index.html
PageHelper5.1.2http://git.oschina.net/free/Mybatis_PageHelper
Dubbo2.6.0http://
Solr7.1.0https://lucene./solr/
ActiveMQ5.15.2http://activemq.
Druid1.1.5https://github.com/alibaba/druid
Jackson2.9.2https://github.com/FasterXML/jackson
Dom4j1.6.1http://www.
Ehcache2.6.11http://www./
Logback1.2.3https://logback.
Maven3.3.9http://maven./
Zookeeper3.4.11https://www./dyn/closer.cgi/zookeeper/

2.前端技術(shù)(Web)

名稱版本號網(wǎng)址
angular-https://
awesome-bootstrap-checkbox-https://github.com/flatlogic/awesome-bootstrap-checkbox
bootstrap3.3.7http://www.
bootstrap-datetimepicker-http://www./p/bootstrap-datetimepicker/
bootstrap-select1.12.4http://silviomoreto./bootstrap-select/
bootstrap-table1.11.1http://bootstrap-table./zh-cn/documentation/
bootstrapvalidator0.5.3https://github.com/nghuuphuoc/bootstrapvalidator/
ECharts3.8.4http://echarts.baidu.com
font-awesome4.7.0http:///icons/
fontIconPicker2.0.0https:///fonticonpicker/
fullPage-https:///fullPage/
jquery-confirm3.3.0https://github.com/craftpip/jquery-confirm
malihu-custom-scrollbar-plugin-https://github.com/videoMonkey/malihu-custom-scrollbar-plugin
material-design-iconic-font2.2.0https://github.com/zavoloklom/material-design-iconic-font
waves0.7.5https://github.com/fians/Waves
zTree_v33.5.26http://www./v3/main.php#_zTreeInfo
BootstrapMenu-https:///bootstrap-menu
device-https://github.com/matthewhudson/device.js
jquery3.2.1http://
jquery-cookie-https://github.com/carhartl/jquery-cookie

三、項(xiàng)目結(jié)構(gòu)(Construction)

四、項(xiàng)目入門(Introduction)

  1. 下載項(xiàng)目,并且導(dǎo)入到IDE開發(fā)工具中(建議使用:IntelliJ IDEA)
  2. 使用 Maven 構(gòu)建項(xiàng)目
  3. 創(chuàng)建數(shù)據(jù)庫并執(zhí)行 yan-dao 模塊中 resources/database 路徑下的 yan.sql文件,創(chuàng)建整個(gè)項(xiàng)目必要的表(如:用戶表、資源表、日志記錄表等...)
  4. 分別修改 yan-dao、yan-service、yan-web 模塊中 resources/properties路徑下的 *.properties 配置文件(具體修改方法及對應(yīng)屬性解釋,詳見 - 五、配置說明)
  5. 完成以上步驟就可以正常部署啟動(dòng)服務(wù)了:

    a). 啟動(dòng) zookeeper 服務(wù)(必要服務(wù),不啟動(dòng)該服務(wù)導(dǎo)致項(xiàng)目無法正常運(yùn)行)

    b). 啟動(dòng) activemq 服務(wù)(非必要服務(wù),若不啟動(dòng)該服務(wù),則項(xiàng)目運(yùn)行中會(huì)有jms監(jiān)聽器異常,但不影響整體能)

    c). 啟動(dòng) solr 服務(wù)(非必要服務(wù),若不啟動(dòng)該服務(wù),則搜索引擎無法使用,但不影響整體功能)

    [以上服務(wù)具體配置及啟動(dòng)命令,這里我不多做闡述了,不知道的可自行百度搜索]
  6. 啟動(dòng)完以上基礎(chǔ)的服務(wù)后,就可以運(yùn)行項(xiàng)目了

    a). 首先啟動(dòng) yan-service,直接運(yùn)行該模塊中的 com.yan.service.ServiceApp.main() 方法來啟動(dòng)

    b). 其次啟動(dòng) yan-web ,可(使用 jetty / tomcat 均可)[詳細(xì)部署過程在這里就不多做闡述了],啟動(dòng)成功后即可訪問web應(yīng)用界面。接下來進(jìn)入開發(fā)階段
  7. 根據(jù)實(shí)際業(yè)務(wù)需求,在對應(yīng)的數(shù)據(jù)庫中創(chuàng)建業(yè)務(wù)表,表命名規(guī)范:“模塊名_表名” 如:SYS_RESOURCE(系統(tǒng)模塊資源表)
  8. 修改 yan-dao 模塊中 resources 路徑下的 generatorConfig.xml 中的 targetPackage 包名及 tableName 表名,使用 MyBatis generator 插件生成對應(yīng)的持久層模塊代碼(Maven 執(zhí)行命令:mvn mybatis-generator:generate),具體配置請參考MyBatis GeneratorXML Configuration
  9. 在 yan-api 模塊中 src/main/java 路徑下創(chuàng)建對應(yīng)的接口
  10. 在 yan-service 模塊中 src/main/java 路徑下創(chuàng)建對應(yīng)的接口服務(wù)實(shí)現(xiàn)類,并在 src/main/resources/META-INF/spring 路徑下的 spring-dubbo-provider.xml 配置中添加聲明暴露對應(yīng)服務(wù)接口
  11. 在 yan-web 模塊中 src/main/java 路徑下創(chuàng)建對應(yīng)的 controller 控制器,該控制器類命名規(guī)范以 Controller 結(jié)尾,繼承 BaseController 類,編寫 controller 控制器業(yè)務(wù)處理代碼(具體使用參考 - 七、示例代碼),并在 src/main/resources/spring/config 路徑下的 spring-dubbo-customer.xml 配置中添加聲明暴露對應(yīng)服務(wù)接口
  12. 在 yan-web 模塊中 src/main/webapp/views 路徑下創(chuàng)建對應(yīng)的jsp頁面,并編寫前端頁面展示代碼

五、配置說明(Properties)

yan-dao 模塊 resources/properties 中配置文件說明

名稱(Key值)描述
mbg.pathmybatis generator 插件生成代碼的路徑(絕對路徑)
mbg.db.usernamemybatis generator 插件連接數(shù)據(jù)庫的用戶名
mbg.db.passwordmybatis generator 插件連接數(shù)據(jù)庫的密碼
mbg.db.driverClassNamemybatis generator 插件連接數(shù)據(jù)庫的驅(qū)動(dòng)
mbg.db.urlmybatis generator 插件連接數(shù)據(jù)庫的地址

yan-service 模塊 resources/properties 中配置文件說明

名稱(Key值)描述
default.datasource.username默認(rèn)數(shù)據(jù)庫用戶名
default.datasource.password默認(rèn)數(shù)據(jù)庫密碼
default.datasource.driverClassName默認(rèn)數(shù)據(jù)庫驅(qū)動(dòng)類
default.datasource.url默認(rèn)數(shù)據(jù)庫鏈接地址
dextend.datasource.username擴(kuò)展數(shù)據(jù)庫用戶名(用于多數(shù)據(jù)源切換)
dextend.datasource.password擴(kuò)展數(shù)據(jù)庫密碼(用于多數(shù)據(jù)源切換)
dextend.datasource.driverClassName擴(kuò)展數(shù)據(jù)庫驅(qū)動(dòng)類(用于多數(shù)據(jù)源切換)
dextend.datasource.url擴(kuò)展數(shù)據(jù)庫鏈接地址(用于多數(shù)據(jù)源切換)
datasource.initialSize初始化時(shí)建立物理連接的個(gè)數(shù)
datasource.minIdle最小連接池?cái)?shù)量
datasource.maxActive最大連接池?cái)?shù)量
datasource.maxWait獲取連接時(shí)最大等待時(shí)間,單位毫秒
datasource.timeBetweenEvictionRunsMillis配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒
datasource.minEvictableIdleTimeMillis配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒
datasource.validationQuery用來檢測連接是否有效的sql
datasource.testWhileIdle建議配置為true,不影響性能,并且保證安全性
datasource.testOnBorrow申請連接時(shí)執(zhí)行validationQuery檢測連接是否有效,做了這個(gè)配置會(huì)降低性能。
datasource.testOnReturn歸還連接時(shí)執(zhí)行validationQuery檢測連接是否有效,做了這個(gè)配置會(huì)降低性能
datasource.poolPreparedStatements是否緩存preparedStatement,也就是PSCache
datasource.maxPoolPreparedStatementPerConnectionSize每個(gè)連接上PSCache的大小
datasource.filters屬性類型是字符串,通過別名的方式配置擴(kuò)展插件,常用的插件有:監(jiān)控統(tǒng)計(jì)用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
--
dubbo.application.namedubbo 應(yīng)用服務(wù)提供者名稱
dubbo.protocol.portdubbo 協(xié)議暴露服務(wù)的端口
dubbo.registry.addressdubbo 使用 zookeeper 注冊中心暴露服務(wù)的地址
--
jms.brokerURLactiveMQ 服務(wù)地址
jms.userNameactiveMQ 服務(wù)管理端用戶名
jms.passwordactiveMQ 服務(wù)管理端密碼

yan-web 模塊 resources/properties 中配置文件說明

名稱(Key值)描述
jms.brokerURLactiveMQ 服務(wù)地址
jms.userNameactiveMQ 服務(wù)管理端用戶名
jms.passwordactiveMQ 服務(wù)管理端密碼
--
logback.name日志文件前綴名稱(一般使用項(xiàng)目名稱,便于區(qū)分)
logback.path日志存放路徑(絕對路徑)
logback.maxHistory日志最大的歷史天數(shù)
logback.db.username日志寫入數(shù)據(jù)庫時(shí)連接數(shù)據(jù)庫的用戶名
logback.db.password日志寫入數(shù)據(jù)庫時(shí)連接數(shù)據(jù)庫的密碼
logback.db.driverClassName日志寫入數(shù)據(jù)庫時(shí)連接數(shù)據(jù)庫的驅(qū)動(dòng)
logback.db.url日志寫入數(shù)據(jù)庫時(shí)連接數(shù)據(jù)庫的url
--
setting.upload文件上傳路徑(絕對路徑)
--
solr.builderSolr搜索引擎服務(wù)地址

六、常用方法(Methods)

方法均在繼承于BaseController的controller類中使用this.metodName或直接使用methodName來進(jìn)行調(diào)用(注:methodName代表需要調(diào)用的方法名稱,方法名稱見下表)
方法名參數(shù)返回值描述
getSessionHttpSession 服務(wù)器會(huì)話獲取服務(wù)器會(huì)話 session 對象
setSessionsession 服務(wù)器會(huì)話設(shè)置服務(wù)器會(huì)話 session 對象
getRequestHttpServletRequest 用戶請求獲取用戶請求 request 對象
setRequestrequest 用戶請求設(shè)置用戶請求 request 對象
getResponseHttpServletResponse 服務(wù)器響應(yīng)結(jié)果獲取服務(wù)器響應(yīng)結(jié)果 response 對象
setResponseresponse 服務(wù)器響應(yīng)結(jié)果設(shè)置服務(wù)器響應(yīng)結(jié)果 response 對象
getSessionUserTbSysUser 用戶對象獲取登錄成功后 session 中的存儲(chǔ)的用戶信息
----
getServiceDelegateService 通用 Service,查看自定義 sqlMap 的代理 service 對象獲取 delegateService 對象
resultPagelist 查詢到的分頁結(jié)果,為 Page 對象PageModel<T> 自定義的分頁模型,T 為查詢的對象分頁結(jié)果集對象
resultMsgstatus 狀態(tài)值(可根據(jù)需求任意設(shè)置,無強(qiáng)制標(biāo)準(zhǔn));msg 消息內(nèi)容;res 返回的對象MsgModel 自定義消息模型消息返回對象
fileUpLoadrequest 上傳方法中傳遞的 request 對象,并非父類中的 request 對象List<String> 上傳文件成功后的新文件名稱,以集合形式返回文件上傳方法,支持多個(gè)文件上傳
fileDownLoadfileName 需要下載的文件名稱ResponseEntity<byte[]> 下載的文件,在瀏覽器會(huì)進(jìn)行下載文件下載方法
----
isNullobj 需要進(jìn)行判斷的對象boolean 為null或空返回 true,否則返回 false判斷對象是否為null,或空
obj2Strobj 需要轉(zhuǎn)換的對象String 對象的值(為null則返回"")對象轉(zhuǎn)換為 String,通常用于獲取 Map 集合中的對象時(shí)使用
getUUIDString 32位主鍵字符串生成 uuid 主鍵,長度為32位,且為大寫模式
base64Encoderstr 需要進(jìn)行編碼的字符串String 進(jìn)行編碼后的結(jié)果字符串對字符串進(jìn)行 base64 編碼
base64Decoderstr 已進(jìn)行 base64 編碼的編碼字符串String 解碼后的原字符串對字符串進(jìn)行 base64 解碼
md5str 需要進(jìn)行 md5 加密的字符串String 加密后的結(jié)果對字符串進(jìn)行 md5 加密算法
currentDatepattern 獲取系統(tǒng)時(shí)間的格式,如:yyyy-MM-dd HH:mm:ssString 返回格式化后的當(dāng)前時(shí)間獲取系統(tǒng)當(dāng)前時(shí)間
timeStamp2Datetimestamp 需要進(jìn)行轉(zhuǎn)換的時(shí)間戳;pattern 轉(zhuǎn)換后的格式String 格式化后的日期時(shí)間戳轉(zhuǎn)換成日期
date2TimeStampdateStr 需要進(jìn)行轉(zhuǎn)換的日期字符串;pattern 日期的格式String 轉(zhuǎn)換后的時(shí)間戳日期轉(zhuǎn)換為時(shí)間戳
readFromFilefilePath 文件路徑(絕對路徑)String 讀取的文件內(nèi)容從指定文件中讀取文件內(nèi)容
writeToFilecontent 需要寫入文件中的內(nèi)容filePath 文件路徑(絕對路徑)將內(nèi)容寫入到指定文件中(寫入會(huì)覆蓋文件原有內(nèi)容,建議先讀取,再寫入,將讀取的內(nèi)容與需要寫入的內(nèi)容并在一起進(jìn)行寫入)
generatePathpath 文件夾路徑(絕對路徑)生成指定路徑文件夾,先進(jìn)行判斷文件夾是否存在,若不存在則創(chuàng)建對應(yīng)目錄的文件夾,若存在則不進(jìn)行任何操作
generateFilepath 文件路徑(絕對路徑)生成指定路徑的文件,先進(jìn)行判斷文件是否存在,若不存在則進(jìn)行創(chuàng)建文件,若存在則不進(jìn)行任何操作
propertiesValuekey 資源文件中的 key 值String 讀取到的 key 對應(yīng)的 value 值讀取 properties 文件中的值,讀取 classpath 下 /properties/config.properties 配置文件
propertiesValueresource 資源文件路徑(對應(yīng) classpath 中的路徑);key 資源文件中的 key 值String 讀取到的 key 對應(yīng)的 value 值讀取指定路徑 properties 文件中的值,會(huì)從 classpath 路徑下進(jìn)行查找資源文件

七、示例代碼(Codes)

創(chuàng)建一個(gè)繼承與BaseController的控制器
獲取日志日志記錄Logger對象
獲取service對象
分頁查詢后臺(tái)代碼
分頁查詢前臺(tái)代碼
文件上傳
文件下載(在jsp頁面使用通用的下載方法,使用restful風(fēng)格)
自定義文件下載后臺(tái)方法
常用 delegateService 方法
常用對象 service 方法

更多方法使用請參考項(xiàng)目中的示例代碼

八、效果預(yù)覽(Preview)

login
web

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多