2015-07-26 / jiekechoo
企鹅讨论群:103880410
前提要求
本博客完全原创,《移动易APP开源组合套件框架(后端+前端)》:
-
历时2个月,从学习Spring Boot开始,到熟悉Spring框架下各类组件,比如:spring-jpa, spring-data-*, 等;
-
一边熟悉业务,一边搭建App后台框架,被人鄙视无数次,与人争论无数次,最终App上线,业务量暴增,后台顶住了压力;
- 现已将App后台框架开源,后台开发同学只需要熟悉业务后针对业务开发就可以了,大大提高了开发效率,尤其是在互联网时代,App时代。
此框架有很多独特之处,方便之处:
-
没有xml定义文件,全部java实现;
-
没有sql语句,全部用repository实现;
-
框架调试自带tomcat,不需要打包后部署看效果;
-
支持restful,支持json,控制权限灵活;
- 采用thymeleaf实现html页面,不需要jsp了;
本项目,需要一些基础知识才能跑起来。
- 你是一个开发人员,至少java有经验;
- 用过spring框架,哪怕是最老的版本,你还需要去spring.io读一些最新的知识:spring boot, spring security, spring data, spring session等;
- 你需要有maven使用经验,否则,根本跑不起来;
- 你需要一些mysql的经验,比如建库表,用户权限等。
设计方案和效果展示:
框架设计
业务层次模型划分
在线API调试
管理页面模板
管理页面-用户管理
web管理数据库
启动应用步骤:
1、本地新建MySQL数据库demo,导入数据表(下面有create user table);
2、本地启动redis服务器(默认redis存储token已关闭,可以在demo.session中去掉注释,来开启redis给功能);
3、运行 mvn spring-boot:run
log出现:Tomcat started on port(s): 8080 (http),证明启动成功
访问在线API文档:
http://localhost:8080/debug/index.html 即可在线查看API手册和调试API。
具体测试操作步骤
1、使用在线API注册用户: /api/create 接口;
2、http://localhost:8080/ 测试“多重认证”(web form模拟web应用和httpBasic模拟客户端应用);
3、http://localhost:8080/admin/ 登录访问图形管理界面(需要在authorities表中增加一条 第1步中创建的用户权限,比如:admin ROLE_ADMIN );
4、http://localhost:8080/lightadmin/ 可GUI管理数据库;
创建数据库
create user table:
CREATE TABLE users ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(45) NOT NULL, password varchar(100) NOT NULL, image varchar(200) DEFAULT '', enabled varchar(45) NOT NULL DEFAULT '1', PRIMARY KEY (id), UNIQUE KEY username_UNIQUE (username) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
CREATE TABLE authorities ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(45) NOT NULL, authority varchar(45) NOT NULL, PRIMARY KEY (id), UNIQUE KEY username_UNIQUE (username,authority) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
APP保活机制
API保活访问采用cookie方式,APP客户端需要把cookie放在http header中发送到服务端,测试如下,SESSION换成你得到的cookie即可
curl http://localhost:8080/api/i/user/9 -H "Cookie:SESSION=5b55e933-7c68-4333-82e4-656d777d72a4"
如果部署到Tomcat中,需要稍微修改一下
修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- ... -->
<packaging>war</packaging>
<!-- ... -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- ... -->
</dependencies>
</project>
将包改成 war,加入tomcat的scope为 provided,这样部署到TOMCAT就不会启动内置的tomcat了。
修改启动类
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
将你的启动类改成以上样式。 mvn package 打包,并把target下的war包部署到TOMCAT即可。
欢迎fork开源框架:GITHUB:
已经停止更新
https://github.com/sectong/mobileeasy
GitHub新代码:
https://github.com/sectong/yidongyi