本文章只做了框架的基本使用方法,详情可以查看官方文档:
http://www.goge-framework.com
框架简介
goge-framework 是一款模仿springboot 的 java开发框架,支持的功能与spring类似:AOP,IOC,MVC 同时也集成了 mybatis 作为持久层,与springboot不同的是:
1. 本框架采用netty作为http服务
2. 集成了jwt用于会话管理
3. 只支持main方法启动,不可以打war包
4. controller只能返回json,不支持转发和重定向
导入jar包
将这个jar包导入到你的项目中:
<dependency>
<groupId>com.gitee.sherlockholmnes</groupId>
<artifactId>goge-start-all</artifactId>
<version>0.1.3</version> <!-- 也可以使用0.1.2版本,但是推荐0.1.3 -->
</dependency>
就这一个jar包,导入后相关的依赖包会自动下载
当然了,如果你不想要mybatis,也可以导入下面这个jar包
<dependency>
<groupId>com.gitee.sherlockholmnes</groupId>
<artifactId>goge-start-simple</artifactId>
<version>0.1.3</version> <!-- 也可以使用0.1.2版本,但是推荐0.1.3 -->
</dependency>
这个jar包不包含jdbc模块,也就是没有集成mybaits的
配置文件
在resource目录下创建一个 goge.yml 文件, 位置和文件名必须一致,不然框架扫描不到。
文件内容如下:
#配置端口号,默认8888
port: 8088
#配置jwt有效期,单位:天
jwtTime: 20
# 这个配置在 0.1.3开始 被废弃,访问http接口不再带后缀
# 配置控制层的请求后缀,必须.开头
contrl: ".html"
#配置跨域请求
cross_domain:
origin: *
methods: "GET,POST"
maxAge: 9
#配置处理请求的线程池参数
threadPool:
corePoolSize: 100
maximumPoolSize: 1000
keepAliveTime: 60
#0.1.3 版本开始,拦截器改用注解形式声明,此节点被废弃
#配置拦截器,必须是数组
inters:
-
class: com.test.controller.inters.LoginInters
pattern: *
#配置持久层
jdbc:
#配置数据源,必须是数组
dataSource:
-
name: dataSource
type: com.alibaba.druid.pool.DruidDataSource
url: 链接字符串
username: 用户名
password: 密码
driverClassName: com.mysql.cj.jdbc.Driver
#配置mybatis方言
dialect: mysql
#配置要扫描的mapper.xml 文件存放路径
mappers: mappers
#配置要扫描的dao层包名
daos: com.test.dao
# 以下配置,在导入了goge-extends包以后 才有效
#redis配置
redis:
# 这些都有默认值,可以不配
maxTotal: 10
maxIdle: 20
minIdle: 2
numTestsPerEvictionRun: 10000
timeBetweenEvictionRunsMillis: 10000
minEvictableIdleTimeMillis: 10000
softMinEvictableIdleTimeMillis: 10000
maxWaitMillis: 1000
testOnBorrow: true
testWhileIdle: true
testOnReturn: true
jmxEnabled: false
jmxNamePrefix: pool
blockWhenExhausted: false
# 这个必须配置
jedisShardInfos:
-
name: master
host: 10.211.55.5
port: 6379
password: 123456
# 发送邮件配置,只支持smtp
mail:
host: smtp.sina.com
port: 465
smtpSslEnable: true
debug: false
# 发件箱
sendMail: yuye_1128@sina.com
sendMailPwd: wallstreet2018@
auth: true
启动项目
创建一个 启动 类,里面定义一个main方法,在main方法里调用 StartEasy.start(启动类.class); 方法即可。
这个类 必须在 所有bean,dao,controller,拦截器 的 父包 或者 爷包 或者 祖先包 里。 不然框架将无法扫描所有的bean
使用IOC
在类上面加上EasyBean注解,即可将该类注册成一个bean,在需要注入该bean对象的字段上 加上Resource注解即可注入,如下图:
name属性可以不配,默认为 该类的名称首字母小写 或者 字段名称。
使用AOP
1. 创建一个类,并实现BaseAop接口,如下图所示:
2. 在需要监听的方法上加上EasyAop注解,如下图所示:
同一个类的方法,可以用不同的aop类去监听
使用Controller
1. 在类上加一个Controller注解,这个类就会被框架识别成一个controller,如下图所示:
2. 在方法上加上EasyMapping注解,将该方法映射成一个 http接口,前端访问方式如下:
/* 0.1.2 版本的访问方式如下 */
http://域名/EasyMapping的value值.html
.html 不是固定的,是在 配置文件里配置的,具体看 配置文件目录
/* 0.1.3 版本开始 将不再使用后缀,而是直接访问 */
http://域名/EasyMapping的value值
3. 需要响应给前端的数据,直接在方法里返回即可,框架会自动转换成json格式 并响应
接受参数
1. 获取所有参数,并返回一个map
request.getParemeters();
2. 根据name获取参数
request.getParemeter("name值");
3. 根据name获取一组参数
request.getParemeterValues("name值");
4. 获取所有headres
request.getHeaders();
5. 根据header的key获取header值
request.getHeader("header的key");
接受前端上传的文件
1. 获取所有的文件并返回一个map
retuqest.getFiles();
2. 根据name值获取一个文件
retuqest.getFile("name值");
会话管理
本框架 由于是用netty作为http服务的,所以没有servlet里的 session,我们是用JWT来做的会话管理。
1. 获取jwt管理对象
JwtManager jwtManager = request.getJwtManager();
2. 往jwt对象里存数据并获取一个token
String token = jwtManager.createToken(要存入的对象);
存入的对象中的字段 只支持 基本数据类型,以及包装器类型,String,
不支持数组 和 其他引用类型,如果你的对象中有这些不支持的类型,也可以
存入,但是无法转换回来
3. 将token转换成原来的对象
原对象类 原对象 = jwtManager.getObject("token字符串",原对象类.class);
4. 校验token是否正确
jwtManager.verifyToken("token字符串");
使用拦截器
1. 创建一个类 实现 BaseInterceptor接口,如下图:
用这个注解去声明拦截器 @EasyInterceptor(pattern = "*")
2. 在goge.yml文件中加入如下配置
如果你用的是 0.1.3 或者更高 版本 则不需要配置这个
#配置拦截器,必须是数组
inters:
-
class: com.test.controller.inters.LoginInters
pattern: *
这个节点必须是数组,因为拦截器可能需要多个
3. 如果拦截器顺利放行的话,返回SUCCESS就好了,否则直接返回 错误提示信息。
创建dao
dao 全部以 interface 的形式创建,创建完以后里面 定义需要的方法即可,没有别的步骤
dao层的方法上 可以用 DataSource(name="数据源name") 注解 去指定要用的数据源,如果只有一个数据源,则不需要指定
dao不需要加EasyBean注解,框架会根据配置文件 的配置自动扫描 并注册bean
dao层的方法 只支持传一个参数,类型不限
添加配置
1. 在goge.yml 文件里添加如下配置:
#配置持久层
jdbc:
#配置数据源,必须是数组
dataSource:
-
name: dataSource
type: com.alibaba.druid.pool.DruidDataSource
url: 连接字符串
username: 用户名
password: 密码
driverClassName: com.mysql.cj.jdbc.Driver
#配置mybatis方言
dialect: mysql
#配置要扫描的mapper.xml 文件存放路径
mappers: mappers
#配置要扫描的dao层包名
daos: com.test.dao
数据源推荐使用 阿里巴巴的 druid
除此之外还支持 mybatis 默认支持那几个数据源
数据源配置 必须是数组,因为可能会需要多个数据源
事务监听
在service层的方法上 加上 traction注解即可:
分页
本框架集成了 github上的开源项目 pagehelper, 分页的时候直接用即可。
pagehelper官方文档:https://pagehelper.github.io/docs/
网友评论