打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
!!!使用Maven构建 整合Dubbo+Zookeeper+SpringMVC+Spring+MyBatis支持分布式 高效便捷开发框架
logo
该项目是一整套整合 Dubbo+Zookeeper+SpringMVC+Spring+MyBatis 支持分布式的高效率便捷开发RPC框架,使开发人员更专注于业务,达到面向业务开发。
项目使用 Maven 构建,便于项目管理,可支持 Oracle、MySql 等主流数据库。
项目模块化分层明确,代码规范,便于后期维护等工作。
前端展示界面采用基于 Boostrap 实现的响应式布局,并集成了一系列的动画效果插件,整体界面简洁、美观大方并可优雅的与后台完成交互操作。
项目目标是为中小型企业打造全方位的J2EE企业级开发解决方案,提高工作效率。
该项目是yan-demo单节点项目的升级版,支持分布式,持续更新中,敬请期待...
近期更新内容
beta 1.0.0:项目整体改造,升级为RPC架构。(注:若想查看非RPC版请移步至https://gitee.com/micyo202/yan
beta 0.1.0:模块优化,删除不必要的模块,优化代码(模块详情参考:三、项目结构)
beta 0.0.5:前端添加ECharts,便于图形化展示
beta 0.0.4:添加JMS(ActiveMQ)消息服务(目前仅测试方法,暂无业务流转,后期逐渐完善细化)
beta 0.0.3:添加Solr搜索引擎服务(基本的全文检索功能,可根据实际需求情况进行二次开发,后期本人再逐渐完善)
beta 0.0.2:优化整体代码、添加更多注释,结构更清晰、代码更易懂
beta 0.0.1:将原有yan-demo项目重构,保留原有功能,模块拆分、优化项目结构
项目所需工具及版本 *
zookeeper-3.4.11 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.11
apache-activemq-5.15.2 http://activemq.apache.org/activemq-5152-release.html
solr-7.1.0 https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.1.0
一、项目开发环境&工具(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
二、技术选型(Technology)
1.服务端技术(Server)
名称版本号网址
Spring Framework4.3.13.RELEASEhttp://projects.spring.io/spring-framework/
Shiro1.4.0http://shiro.apache.org
AspectJ1.8.13http://www.eclipse.org/aspectj/
MyBatis3.4.5http://www.mybatis.org/mybatis-3/zh/index.html
MyBatis Generator1.3.5http://www.mybatis.org/generator/index.html
PageHelper5.1.2http://git.oschina.net/free/Mybatis_PageHelper
Dubbo2.6.0http://dubbo.io
Solr7.1.0https://lucene.apache.org/solr/
ActiveMQ5.15.2http://activemq.apache.org
Druid1.1.5https://github.com/alibaba/druid
Jackson2.9.2https://github.com/FasterXML/jackson
Dom4j1.6.1http://www.dom4j.org
Ehcache2.6.11http://www.ehcache.org/
Logback1.2.3https://logback.qos.ch
Maven3.3.9http://maven.apache.org/
Zookeeper3.4.11https://www.apache.org/dyn/closer.cgi/zookeeper/
2.前端技术(Web)
名称版本号网址
angular-https://angularjs.org
awesome-bootstrap-checkbox-https://github.com/flatlogic/awesome-bootstrap-checkbox
bootstrap3.3.7http://www.bootcss.com
bootstrap-datetimepicker-http://www.bootcss.com/p/bootstrap-datetimepicker/
bootstrap-select1.12.4http://silviomoreto.github.io/bootstrap-select/
bootstrap-table1.11.1http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
bootstrapvalidator0.5.3https://github.com/nghuuphuoc/bootstrapvalidator/
ECharts3.8.4http://echarts.baidu.com
font-awesome4.7.0http://fontawesome.io/icons/
fontIconPicker2.0.0https://codeb.it/fonticonpicker/
fullPage-https://alvarotrigo.com/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.treejs.cn/v3/main.php#_zTreeInfo
BootstrapMenu-https://mobirise.com/bootstrap-menu
device-https://github.com/matthewhudson/device.js
jquery3.2.1http://jquery.com
jquery-cookie-https://github.com/carhartl/jquery-cookie
三、项目结构(Construction)
四、项目入门(Introduction)
下载项目,并且导入到IDE开发工具中(建议使用:IntelliJ IDEA)
使用 Maven 构建项目
创建数据库并执行 yan-dao 模块中 resources/database 路径下的 yan.sql文件,创建整个项目必要的表(如:用户表、资源表、日志记录表等...)
分别修改 yan-dao、yan-service、yan-web 模块中 resources/properties路径下的 *.properties 配置文件(具体修改方法及对应属性解释,详见 - 五、配置说明)
完成以上步骤就可以正常部署启动服务了:
a). 启动 zookeeper 服务(必要服务,不启动该服务导致项目无法正常运行)
b). 启动 activemq 服务(非必要服务,若不启动该服务,则项目运行中会有jms监听器异常,但不影响整体能)
c). 启动 solr 服务(非必要服务,若不启动该服务,则搜索引擎无法使用,但不影响整体功能)
[以上服务具体配置及启动命令,这里我不多做阐述了,不知道的可自行百度搜索]
启动完以上基础的服务后,就可以运行项目了
a). 首先启动 yan-service,直接运行该模块中的 com.yan.service.ServiceApp.main() 方法来启动
b). 其次启动 yan-web ,可(使用 jetty / tomcat 均可)[详细部署过程在这里就不多做阐述了],启动成功后即可访问web应用界面。接下来进入开发阶段
根据实际业务需求,在对应的数据库中创建业务表,表命名规范:“模块名_表名” 如:SYS_RESOURCE(系统模块资源表)
修改 yan-dao 模块中 resources 路径下的 generatorConfig.xml 中的 targetPackage 包名及 tableName 表名,使用 MyBatis generator 插件生成对应的持久层模块代码(Maven 执行命令:mvn mybatis-generator:generate),具体配置请参考MyBatis GeneratorXML Configuration
在 yan-api 模块中 src/main/java 路径下创建对应的接口
在 yan-service 模块中 src/main/java 路径下创建对应的接口服务实现类,并在 src/main/resources/META-INF/spring 路径下的 spring-dubbo-provider.xml 配置中添加声明暴露对应服务接口
在 yan-web 模块中 src/main/java 路径下创建对应的 controller 控制器,该控制器类命名规范以 Controller 结尾,继承 BaseController 类,编写 controller 控制器业务处理代码(具体使用参考 - 七、示例代码),并在 src/main/resources/spring/config 路径下的 spring-dubbo-customer.xml 配置中添加声明暴露对应服务接口
在 yan-web 模块中 src/main/webapp/views 路径下创建对应的jsp页面,并编写前端页面展示代码
五、配置说明(Properties)
yan-dao 模块 resources/properties 中配置文件说明
名称(Key值)描述
mbg.pathmybatis generator 插件生成代码的路径(绝对路径)
mbg.db.usernamemybatis generator 插件连接数据库的用户名
mbg.db.passwordmybatis generator 插件连接数据库的密码
mbg.db.driverClassNamemybatis generator 插件连接数据库的驱动
mbg.db.urlmybatis generator 插件连接数据库的地址
yan-service 模块 resources/properties 中配置文件说明
名称(Key值)描述
default.datasource.username默认数据库用户名
default.datasource.password默认数据库密码
default.datasource.driverClassName默认数据库驱动类
default.datasource.url默认数据库链接地址
dextend.datasource.username扩展数据库用户名(用于多数据源切换)
dextend.datasource.password扩展数据库密码(用于多数据源切换)
dextend.datasource.driverClassName扩展数据库驱动类(用于多数据源切换)
dextend.datasource.url扩展数据库链接地址(用于多数据源切换)
datasource.initialSize初始化时建立物理连接的个数
datasource.minIdle最小连接池数量
datasource.maxActive最大连接池数量
datasource.maxWait获取连接时最大等待时间,单位毫秒
datasource.timeBetweenEvictionRunsMillis配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
datasource.minEvictableIdleTimeMillis配置一个连接在池中最小生存的时间,单位是毫秒
datasource.validationQuery用来检测连接是否有效的sql
datasource.testWhileIdle建议配置为true,不影响性能,并且保证安全性
datasource.testOnBorrow申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
datasource.testOnReturn归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
datasource.poolPreparedStatements是否缓存preparedStatement,也就是PSCache
datasource.maxPoolPreparedStatementPerConnectionSize每个连接上PSCache的大小
datasource.filters属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
--
dubbo.application.namedubbo 应用服务提供者名称
dubbo.protocol.portdubbo 协议暴露服务的端口
dubbo.registry.addressdubbo 使用 zookeeper 注册中心暴露服务的地址
--
jms.brokerURLactiveMQ 服务地址
jms.userNameactiveMQ 服务管理端用户名
jms.passwordactiveMQ 服务管理端密码
yan-web 模块 resources/properties 中配置文件说明
名称(Key值)描述
jms.brokerURLactiveMQ 服务地址
jms.userNameactiveMQ 服务管理端用户名
jms.passwordactiveMQ 服务管理端密码
--
logback.name日志文件前缀名称(一般使用项目名称,便于区分)
logback.path日志存放路径(绝对路径)
logback.maxHistory日志最大的历史天数
logback.db.username日志写入数据库时连接数据库的用户名
logback.db.password日志写入数据库时连接数据库的密码
logback.db.driverClassName日志写入数据库时连接数据库的驱动
logback.db.url日志写入数据库时连接数据库的url
--
setting.upload文件上传路径(绝对路径)
--
solr.builderSolr搜索引擎服务地址
六、常用方法(Methods)
方法均在继承于BaseController的controller类中使用this.metodName或直接使用methodName来进行调用(注:methodName代表需要调用的方法名称,方法名称见下表)
方法名参数返回值描述
getSession无HttpSession 服务器会话获取服务器会话 session 对象
setSessionsession 服务器会话无设置服务器会话 session 对象
getRequest无HttpServletRequest 用户请求获取用户请求 request 对象
setRequestrequest 用户请求无设置用户请求 request 对象
getResponse无HttpServletResponse 服务器响应结果获取服务器响应结果 response 对象
setResponseresponse 服务器响应结果无设置服务器响应结果 response 对象
getSessionUser无TbSysUser 用户对象获取登录成功后 session 中的存储的用户信息
----
getService无DelegateService 通用 Service,查看自定义 sqlMap 的代理 service 对象获取 delegateService 对象
resultPagelist 查询到的分页结果,为 Page 对象PageModel<T> 自定义的分页模型,T 为查询的对象分页结果集对象
resultMsgstatus 状态值(可根据需求任意设置,无强制标准);msg 消息内容;res 返回的对象MsgModel 自定义消息模型消息返回对象
fileUpLoadrequest 上传方法中传递的 request 对象,并非父类中的 request 对象List<String> 上传文件成功后的新文件名称,以集合形式返回文件上传方法,支持多个文件上传
fileDownLoadfileName 需要下载的文件名称ResponseEntity<byte[]> 下载的文件,在浏览器会进行下载文件下载方法
----
isNullobj 需要进行判断的对象boolean 为null或空返回 true,否则返回 false判断对象是否为null,或空
obj2Strobj 需要转换的对象String 对象的值(为null则返回"")对象转换为 String,通常用于获取 Map 集合中的对象时使用
getUUID无String 32位主键字符串生成 uuid 主键,长度为32位,且为大写模式
base64Encoderstr 需要进行编码的字符串String 进行编码后的结果字符串对字符串进行 base64 编码
base64Decoderstr 已进行 base64 编码的编码字符串String 解码后的原字符串对字符串进行 base64 解码
md5str 需要进行 md5 加密的字符串String 加密后的结果对字符串进行 md5 加密算法
currentDatepattern 获取系统时间的格式,如:yyyy-MM-dd HH:mm:ssString 返回格式化后的当前时间获取系统当前时间
timeStamp2Datetimestamp 需要进行转换的时间戳;pattern 转换后的格式String 格式化后的日期时间戳转换成日期
date2TimeStampdateStr 需要进行转换的日期字符串;pattern 日期的格式String 转换后的时间戳日期转换为时间戳
readFromFilefilePath 文件路径(绝对路径)String 读取的文件内容从指定文件中读取文件内容
writeToFilecontent 需要写入文件中的内容filePath 文件路径(绝对路径)将内容写入到指定文件中(写入会覆盖文件原有内容,建议先读取,再写入,将读取的内容与需要写入的内容并在一起进行写入)
generatePathpath 文件夹路径(绝对路径)无生成指定路径文件夹,先进行判断文件夹是否存在,若不存在则创建对应目录的文件夹,若存在则不进行任何操作
generateFilepath 文件路径(绝对路径)无生成指定路径的文件,先进行判断文件是否存在,若不存在则进行创建文件,若存在则不进行任何操作
propertiesValuekey 资源文件中的 key 值String 读取到的 key 对应的 value 值读取 properties 文件中的值,读取 classpath 下 /properties/config.properties 配置文件
propertiesValueresource 资源文件路径(对应 classpath 中的路径);key 资源文件中的 key 值String 读取到的 key 对应的 value 值读取指定路径 properties 文件中的值,会从 classpath 路径下进行查找资源文件
七、示例代码(Codes)
创建一个继承与BaseController的控制器
获取日志日志记录Logger对象
获取service对象
分页查询后台代码
分页查询前台代码
文件上传
文件下载(在jsp页面使用通用的下载方法,使用restful风格)
自定义文件下载后台方法
常用 delegateService 方法
常用对象 service 方法
更多方法使用请参考项目中的示例代码
八、效果预览(Preview)
login
web
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring3.2.4 和 MyBatis 整合笔记
使用SpringBoot搭建Web项目
jboss配置文件的简单介绍 - JAVA流通桥 - BlogJava
java零基础教程:从零开发一个Java Web项目要点
SpringBoot持久化层操作支持(一)SQL篇
初识Mybatis--总结Mybatis的基础知识点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服