当前位置: 首页 > news >正文

网站关键词写在哪里牛天下网站建设

网站关键词写在哪里,牛天下网站建设,滁州seo网站推广方案,比较好的摄影网站一、相关往期文章 SpringBootVue实现AOP系统日志功能_aop的vue完整项目 Spring AOP (面向切面编程#xff09;原理与代理模式—实例演示_面向切面aop原理详解 二、需求分析 按照一般情况#xff0c;统一接受类可以像以下的方式进行处理#xff1a; 如果不想使用 Request…一、相关往期文章 SpringBootVue实现AOP系统日志功能_aop的vue完整项目 Spring AOP (面向切面编程原理与代理模式—实例演示_面向切面aop原理详解 二、需求分析 按照一般情况统一接受类可以像以下的方式进行处理 如果不想使用 RequestBody RequestPackRequestPackSave requestPack  当然也可以使用AOP在controller层数据执行之前对数据进行处理。 三、代码实现 controller层正常写就行 //该方法只对使用了RequestBody注解的参数生效 RestControllerAdvice public class GlobalRequestAdvice implements RequestBodyAdvice {Overridepublic boolean supports(MethodParameter methodParameter, Type type, Class? extends HttpMessageConverter? aClass) {// 此处true代表执行当前advice的业务false代表不执行return true;}/*** 读取参数前执行** param httpInputMessage* param methodParameter* param type* param aClass* return 返回一个新的 HttpInputMessage该消息可能包含修改后的请求体。* throws IOException* HttpInputMessage httpInputMessage: 表示原始的 HTTP 请求消息。* MethodParameter methodParameter: 表示控制器方法的参数。* Type type: 表示方法参数的类型。* Class? extends HttpMessageConverter? aClass: 表示将要使用的* HttpMessageConverter 类型。*/Overridepublic HttpInputMessage beforeBodyRead(HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class? extends HttpMessageConverter? aClass) throws IOException {return new HttpInputMessage() {Overridepublic InputStream getBody() throws IOException {String bodyStr IOUtils.toString(httpInputMessage.getBody(), utf-8);GlobalHttpReceive httpReceive GsonUtil.jsonToObject(bodyStr, GlobalHttpReceive.class);if (httpReceive ! null) {Object data httpReceive.getReqData();if (data ! null) {return IOUtils.toInputStream(GsonUtil.objectToJson(data), utf-8);}}throw new SSError(GlobalCodeEnum.RequestFormatError);}Overridepublic HttpHeaders getHeaders() {return httpInputMessage.getHeaders();}};}/*** 读取参数后执行** param o* param httpInputMessage* param methodParameter* param type* param aClass* return*/Overridepublic Object afterBodyRead(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class? extends HttpMessageConverter? aClass) {return o;}/*** 无请求时的处理** param o* param httpInputMessage* param methodParameter* param type* param aClass* return*/Overridepublic Object handleEmptyBody(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class? extends HttpMessageConverter? aClass) {return o;} } 四、解释说明 RequestBodyAdvice 的设计初衷是为了拦截并处理那些使用了 RequestBody 注解的参数。也就是说当一个控制器方法参数被 RequestBody 注解标注时Spring 会在处理该参数时调用 RequestBodyAdvice。supports 方法的参数MethodParameter methodParameter: 代表方法参数的相关信息。Type type: 代表方法参数的类型。Class? extends HttpMessageConverter? aClass: 代表将要使用的 HttpMessageConverter 类型。 始终返回 true: 在实现 RequestBodyAdvice 接口的类中supports 方法返回 true 意味着对于所有进入的请求体参数都会执行 beforeBodyRead、afterBodyRead 和 handleEmptyBody 等方法。换句话说无论请求体的内容是什么只要这个参数被 RequestBody 注解标记当前的 RequestBodyAdvice 实现就会对其进行处理。当 Spring 处理某个带有 RequestBody 注解的方法参数时会调用 supports 方法。由于 supports 方法始终返回 true因此所有带有 RequestBody 注解的参数都会被当前的 RequestBodyAdvice 处理。 return new HttpInputMessage() {Overridepublic InputStream getBody() throws IOException {String bodyStr IOUtils.toString(httpInputMessage.getBody(), utf-8);GlobalHttpReceive httpReceive GsonUtil.jsonToObject(bodyStr, GlobalHttpReceive.class);if (httpReceive ! null) {Object data httpReceive.getReqData();if (data ! null) {return IOUtils.toInputStream(GsonUtil.objectToJson(data), utf-8);}}throw new SSError(GlobalCodeEnum.RequestFormatError);}Overridepublic HttpHeaders getHeaders() {return httpInputMessage.getHeaders();} };这段代码是一个全局请求处理的拦截器类主要实现了Spring的RequestBodyAdvice接口用于对请求的RequestBody参数进行处理。具体功能如下 supports方法用于判断是否执行当前advice的业务逻辑这里始终返回true表示对所有使用了RequestBody注解的参数进行处理。 beforeBodyRead方法在读取参数前执行首先将请求体内容转换为字符串然后尝试将其转换为GlobalHttpReceive对象提取其中的reqData字段。如果reqData不为空则将其转换为JSON字符串后重新封装成InputStream返回否则抛出SSError(GlobalCodeEnum.RequestFormatError)异常。 afterBodyRead方法在读取参数后执行这里直接返回参数对象。 handleEmptyBody方法用于处理无请求体时的情况这里也直接返回参数对象。 通过始终返回 truesupports 方法确保了任何带有 RequestBody 注解的参数都会进入 RequestBodyAdvice 的处理方法中从而实现对这些参数的统一预处理逻辑。这种设计使得开发者可以集中管理和处理所有请求体的数据而不需要在每个控制器方法中分别编写重复的处理代码。 五、对比分析 虽然 RequestBodyAdvice 并不是严格的 AOP但它确实体现了 AOP 的一些思想。举个例子如果你要记录所有请求体的数据可以这样实现 import org.springframework.http.HttpInputMessage; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter; import java.lang.reflect.Type;ControllerAdvice public class LoggingRequestBodyAdvice extends RequestBodyAdviceAdapter {Overridepublic boolean supports(MethodParameter methodParameter, Type type, Class? extends HttpMessageConverter? aClass) {// 支持所有请求体的处理return true;}Overridepublic Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class? extends HttpMessageConverter? converterType) {// 在读取请求体之后记录日志System.out.println(Request Body: body);return body;}Overridepublic Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class? extends HttpMessageConverter? converterType) {// 处理空请求体的情况System.out.println(Request Body is empty);return body;} }RequestBodyAdvice 并不完全属于 AOP 范畴但它利用了类似于 AOP 的拦截机制来处理请求体的读取过程。在 Spring Boot 中真正的 AOP 通常通过 Aspect 注解和切点表达式来实现用于更广泛的应用场景。而 RequestBodyAdvice 则是专门针对 HTTP 请求体处理的一种机制。
http://www.w-s-a.com/news/185712/

相关文章:

  • 棋牌网站开发需要多少钱整网站代码 带数据 免费 下载
  • 网站建设 sql 模版猎头用什么网站做单
  • 河北保定建设工程信息网站wordpress 远程缓存
  • 手机网站开发之列表开发win7网站开发教程
  • 楚雄市住房和城乡建设局网站廊坊企业网站建设
  • 东莞规划局官方网站wordpress添加文章页不显示图片
  • 做企业网站要哪些人员百度商城网站建设
  • c语言软件开和网站开发区别多产品的网站怎么做seo
  • 收益网站制作移动互联网应用的使用情况表格
  • 专业的手机网站建设公司哪家好同城信息网站建设
  • 参与做网站的收获国外网站服务器建设
  • 西宁网站建设报价cu君博规范网站kv如何做
  • 毕业室内设计代做网站广东建设监理协会网站个人账号
  • 百度推广点击收费标准自己如何做网站优化
  • 安徽省建设监理网站广州澄网站建设公司
  • 做简历用什么网站俄罗斯搜索引擎浏览器官网入口
  • dw里响应式网站怎么做制作网站需要多少时间
  • 网站如何做双链路示范学校建设专题网站
  • 网站开发北京影视网站seo描述
  • 高端网站定制建设公司哪家好企业网络推广技巧
  • 建设公司网站的内容建筑设计图片
  • 用ps怎么做网站的效果图互联网营销师报名入口官网
  • 网站的后端怎么开发网站 白名单
  • 济宁中小企业网站建设wordpress爆破工具
  • 零基础网站建设视频商城系统平台有哪些
  • 那个网站做百科好过wordpress删除
  • 优化网站排名怎么制作网站建设数据库模板
  • 哪个建站软件比较好带论坛都有什么公司需要网站建设
  • 同城便民网站开发自己免费怎么制作网站吗
  • 数据库网站开发教程网站内部优化是什么意思