美文网首页
Goge-framework(Goge框架) 如何使用

Goge-framework(Goge框架) 如何使用

作者: 其实我是一个天才 | 来源:发表于2018-12-22 14:14 被阅读33次

本文章只做了框架的基本使用方法,详情可以查看官方文档:

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/

相关文章

网友评论

      本文标题:Goge-framework(Goge框架) 如何使用

      本文链接:https://www.haomeiwen.com/subject/pdpikqtx.html