GoFramework框架简介(六)--web篇

使用SpringMvc做为web的核心框架,一般接口后缀为".do"。RequestBody类型的请求参数要求继承AbstarctBaseRequestDto,自带校验逻辑。响应结果要求使用ResDto类型。在方法中可以抛出异常。

框架的拦截器列表

拦截器说明
通用拦截器将接口请求的关键信息设置在上下文中
会话注入拦截器基于SPI方式,允许项目将会话对象的json串设置在上下文中。

框架通过2个拦截器将关键信息记录在上下文中,使得在dubbo调用时,可以将该信息传递到dubbo服务端。


框架的转换器

转换器说明
jackson转换器定义了将json字符串读取与写入的方法

异常处理器

自定的异常处理器org.go.framework.web.exception.AnnotationHandlerMethodExceptionResolver,对mvc方法中抛出的异常进行处理。转换方式

异常类型说明
PendingException提取异常对象中的code和message字段,转换成ResDto
GoRuntimeException同上
其它异常根据异常类型定义出10多种不同的错误码,如空指针异常,数组越界等。如果所有类型都匹配不到,则使用“其它未知错误”的错误码。

SPI扩展部分

  • 会话属性注入扩展

    描述请求参数的Field在使用@MvcInject注解时的具体操作。实现该SPI后,web应用将支持@MvcValidate和@MvcInject注解。Mvc扩展注解说明如下:

注解名称作用范围说明
MvcValidate方法方法加上此注解后,会对请求参数中带@MvcInject注解的属性进行自动注入,最后执行AbstractBaseRequestDto.validateThrow方法。
MvcInject属性从会话中自动注入该属性
MvcOptional属性接口文档中生成的属性会带上“可选”标识
MvcIgnore属性带该注解的字段不会生成在接口文档中,表示后续通过计算得到的属性值,一般用于mybatis中。
  • 会话对象注入扩展

    描述在上下文设置会话的具体实现。实现该注解后,在dubbo端可以从RpcContext中获取到用户会话信息。如下:

public static RpcSessionUser get() {
    // 从context中获取会话信息的json字符串
    RpcSessionUser rpcSessionUser = new Gson().fromJson(Context.getRequestInfo().getSessionUser(),RpcSessionUser.class);
    // 若用户会话信息不存在则抛出异常
    if(Context.getRequestInfo().getSessionUser() == null) {
        throw new GoRuntimeException(ResCode.RPC_SESSION_GET_FAILED.toException());
    }
    return rpcSessionUser;
}

转载于:https://www.cnblogs.com/wuyuhuanzhen/p/9323467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值