美文网首页
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