spring+springmvc+mybatis+shiro+gradle简单集成框架
Java JavaScript
Latest commit 8803d2d Aug 2, 2016 @ichenkaihua committed on GitHub fix web.xml
Permalink
Failed to load latest commit information.
db
doc add restapi generator May 15, 2016
gradle/wrapper 自动生成的配置文件 Sep 14, 2015
src fix web.xml Aug 2, 2016
.gitignore 添加忽略eclipse项目文件 Sep 14, 2015
README.md 完善说明 May 16, 2016
build.gradle 添加clean依赖 May 16, 2016
gradle.properties 更新到v2.1 Apr 18, 2016
gradlew 初始化项目 Aug 26, 2015
gradlew.bat 初始化项目 Aug 26, 2015
settings.gradle 初始化项目 Aug 26, 2015

README.md

ssm-easy-template

介绍

Ssm-Easy-Template 是一个J2Ee项目快速开发脚手架,集成了最常用的框架,适用于Restfull 架构风格Web Service接口开发。项目使用最灵活的构建工具-gradle,加入了常用的gradle插件(gretty,flydbmybatis generator),集成swagger2asciidoctor,自动生成rest api文档。

组成

主要框架
  • Spring4.2: 不多说,貌似J2EE离不开他了。
  • Springmvc4.2: 与Spring无缝集成,简单灵活,支持Restful风格。
  • Mybatis3.3.0 :个人认为比Hibernate好控制,毕竟是自己写的Sql语句。
  • Shiro: Apache的权限管理框架,扩展性好,使用简单,个人认为比Spring-Security框架容易入手。
  • tomcat连接池 : 稳定,性能好。
  • sf4j :支持多种日志系统,使用的是log4j。
  • spring-fox: 自动生成rest api文档
  • asccidoctor: 将rest api转换成html5和pdf格式的硬文档
工具框架
  • Spring-Test :包括了常用单元测试、集成测试、Web测试,Src/Test/Java下有几个简单的测试类。使用测试框架的好处就是节省时间,无需启动Server就能测试程序。
  • Mybatis-Pagehelper :Mybatis的分页排序插件,由国人开发,用起来非常方便,Mybatis-Pagehelperp 项目主页。
  • Mybatis通用Mapper3 也是有上面作者开发,极其方便的使用Mybatis单表的增删改查,如果是单表操作,基本不用写Mapper文件,Mybatis通用Mapper3 项目主页。
  • Spring-Mail: 可修改/src/main/resource/mail-config.properties配置文件,这个配置文件配置的是主邮箱。
  • commons fileupload:spring mvc中集成了appache-commons-fileupload上传组件。上传处理更便捷。

效果图

live-api html_api

开发工具

IDE

Eclipse确实强大,但 Intellij Idea 更智能,强烈推荐 Idea

依赖管理工具

Maven可能更容易上手,但我更喜欢Gradle的简洁

使用

下载

Download Zip或者git clone

    git clone https://github.com/ichenkaihua/ssm-easy-template.git

快速开始

新建或者配置一个mysql数据库,根据数据库信息修改src/main/resources-dev/jdbc-mysql.properties文件。 然后进入命令行:

# 进入项目目录
cd ssm-easy-template/

# 初始化数据库,将db/migration目录下sql迁移到本地数据库
./gradlew flywayMigrate

# jetty启动项目
./gradlew  appStart

# 获取所有用户 
curl  http://localhost:8080/users

# 其他操作...

# 关闭jetty
./gradlew appStop

导入

建议使用IDEA,eclipse也没问题

详细修改

利用mybatis-generator(MBG) 生成model/mapper/mapper.xml文件

Mybatis考虑到手写XML文件的繁琐,因此开发了MBG工具,通用Mapper这个项目再次简化了mybatis的生成代码数量。ssm-easy-template把mybatis generator放在build.gradle中,封装成一个Gradle Task

  • 修改generator配置文件: 打开gradle.propertis文件,修改生成信息(数据库信息在src/main/resources/db-mysql.properties),默认如下
#生成的model类所在包
modelPackage=com.github.ichenkaihua.model
#生成的mapper接口类所在包
mapperPackage=com.github.ichenkaihua.mapper
#生成的mapper xml文件所在包,默认存储在resources目录下
sqlMapperPackage=mybatis_mapper
  • 执行 mybatisGenerate task :
./gradlew mybatisGenerate

修改项目配置文件

src/main/resources目录下,有下列文件:

#项目运行的数据库配置
jdbc-mysql.properties
#log4j配置
log4j.properties
#mail 
mail-config.properties
#spring Application root Context
spring-config.xml
# spirng-mail
spring-mail.xml
#springMVC context
spring-mvc-config.xml
#springMVC shiro
spring-mvc-shiro.xml
#spring-mybatis
spring-mybatis.xml
#spring-shiro
spring-shiro.xml
#spring-tomcatl-pool 连接池
spring-tomcat-pool.xml
#连接池配置
tomcat-pool-config.properties

ssm-easy-template把项目配置分离,便于后期扩展或替换组件。根据项目需要更改配置文件

数据库开发环境切换

项目开发中,通常有多个环境,一个是用于本地调试的开发环境,另一个是用于对外发布的生产环境。 在本地开发环境中,使用本地安装的数据库,在生产环境中使用生产环境的数据库。这样就能避免本地调试不当导致对生产环境数据造成破坏。本项目用gradle简单实现了此功能

如何使用

  • 根据项目情况,修改src/main/resources-dev/jdbc-mysql.properties,这个文件是开发环境下数据库配置,通常配置的本地数据库环境
  • 根据项目情况,修改src/main/resources-prod/jdbc-mysql.properties,这个文件是开发环境下数据库配置,通常配置的是外网数据库环境
  • 修改gradle.properties配置文件的属性env=dev,有两个选项:dev--本地环境,prod--生产环境
  • 重新build或appStart即可

需要注意的是: resources-dev/jdbc-mysql.propertiesresources-prod/jdbc-mysql.properties两个文件的字段名要一致,因为spring会读取这两个文件中的一个,字段不一致会导致出错

生成restAPI文档

项目集成了spring-fox,asccidotor,能够在线浏览restapi,并生成html,pdf格式的硬文档 项目启动后,打开http://localhost:8080/swagger-ui.html即可查看api文档

# 生成html和pdf文档
gradle asccidoctor

之后在build/asccidoc目录下可以找到生成的html5和pdf文件.

生成的pdf文件有中文显示不全的问题,这是asciidoctor的官方bug,现在已经有方案解决,建议使用asciidoctor-pdf工具,使用自定义主题解决这问题.请参考 这里

实现项目逻辑

为了方便后期扩展与重用,ssm-easy-template封装出BaseService<Mapper<M>,M>,通常service继承BaseService<Mapper<M>,M>,单表操作的逻辑不需要再实现

部署

SSM-Easy-Template集成了gretty插件,更多使用方法前往gretty官网

# jetty启动项目,http://locaohost:8080/
./gradlew  jettyStart

#关闭jetty
./gradlew jettyStop

Debug

可以参考IntelliJ IDEA +gradle+gretty debug j2ee web-application

修改记录

  • 2016-5-15 --v2.2
    • 集成 spring-fox, swagger2,自动生产restApi文档,开启应用即可浏览
    • 集成 asciidoctor,一键生成restApi的htmlpdf格式文档
    • 集成 rest-assured,并提供demo,结合spring-mvc-test框架使用,测试rest接口更简单

changelog

相关文档

关于我

博客链接:陈开华的博客

Email: admin@chenkaihua.com