java spring项目实践,spring MVC实践需要注意的地方

使用spring mvc提供restful风格的接口,实现前后端分离,后端只提供数据接口,而不做页面渲染。因此可对接口做统一处理:

请求参数校验

响应数据格式

全局异常处理

通过以上统一处理,开发人员可专注于业务处理,把校验,异常响应的逻辑分离出来。

请求参数校验:

对于url中的参数

如果添加@RequestParam,但没有传递该参数,则抛出MissingServletRequestParameterException异常

如果添加@Max等注解,同时不满足该条件,抛出ConstraintViolationException 或BindException异常

对于request body请求体中的参数

Bean前添加@RequestBody,如果没有请求体,抛出HttpMessageNotReadableException异常

在bean前添加@Validate注解,bean中属性添加@Max,@NotNull等注解,即对响应属性进行校验,如果不满足,抛出MethodArguementNotValidException

@Validate内可添加group,表明需要校验的操作,@Max可添加groups,当groups包含group时,则进行校验。

Bean中也可自定义注解,通过实现ConstraintValidator接口自定义校验逻辑。如果校验失败,会抛出MethodArgumentNotValidException异常,

这些异常都被全局异常处理拦截,返回异常信息。

响应数据格式:

建立统一响应类JsonResp,泛型T为业务响应内容,可为String,List,java bean等。定义属性result表明响应是否成功,响应码code,响应码信息msg。这里code及msg与全局异常处理的响应枚举类相对应。

定义ResponseBodyhandler实现ResponseBodyAdvice接口,当响应类型为json时,如果响应类型为JsonResp,直接响应给客户端;如果不是,则new JsonResp,将响应体set进去,响应给客户端。

在controller的方法返回类型可任意定义String,List,java bean,在ResponseBodyhandler转化为统一JsonResp形式。如果是流文件,则直接返回不会转化为JsonResp形式。这样可将响应包装成统一的JsonResp数据格式,便于前端处理。

全局异常处理

建立响应枚举类ResponseEnum,定义业务需要的响应码及响应码信息

建立自定义异常类BaseException,继承运行时异常RuntimeException,初始化时设置ResponseEnum。

建立异常捕捉类GlobalExceptionAspect,类中添加@RestCOntrollerAdvice注解,使用@Exceptional捕捉参数校验异常和自定义异常BaseException。

最外层捕捉Exception,捕捉未定义的异常

如果遇到业务报错,throw new BaseException(ResponseEnum.xxx),抛出自定义异常,该异常由GlobalExceptionAspect切面捕捉,统一响应至客户端

统一定义异常响应码,便于查看

避免在业务代码里进行异常的响应,简化代码

这些统一处理的本质是使用fliter或者aop拦截请求和响应参数进行通用逻辑处理,因此,可对请求进行敏感词过滤,参数加解密等处理,解耦业务逻辑。

以上就是spring MVC实践需要注意的地方的详细内容,更多关于spring MVC实践的资料请关注脚本之家其它相关文章!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值