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

阅读网站模板下载小说百度搜索风云榜

阅读网站模板下载,小说百度搜索风云榜,网站开发资费,wordpress 多少张表文章目录 1.common-tool-starter1.目录结构2.ResultWrapper.java 2.common-web-starter1.目录结构2.IgnoredResultWrapper.java 自定义注解,忽略对返回结果的自动包装3.ReturnValueHandlersDecorator.java 对适配器进行扩展的装饰器4.WebAutoConfiguration.java 将装…

文章目录

    • 1.common-tool-starter
        • 1.目录结构
        • 2.ResultWrapper.java
    • 2.common-web-starter
        • 1.目录结构
        • 2.IgnoredResultWrapper.java 自定义注解,忽略对返回结果的自动包装
        • 3.ReturnValueHandlersDecorator.java 对适配器进行扩展的装饰器
        • 4.WebAutoConfiguration.java 将装饰器注入容器
    • 3.common-web-starter-demo
        • 1.WebController.java 测试三种使用方式
        • 2.测试
          • 1.第一种:直接使用自动包装成功结果
          • 2.第二种:使用 @IgnoredResultWrapper注解忽略掉自动包装
          • 3.第三种:直接使用ResultWrapper来自己封装结果

1.common-tool-starter

1.目录结构

CleanShot 2025-01-06 at 18.36.32@2x

2.ResultWrapper.java
package com.sunxiansheng.tool.response;import lombok.Data;import java.io.Serializable;/*** Description: 通用响应封装类,通过枚举来获取code和message** @Author sun* @Create 2024/10/11* @Version 1.0*/
@Data
public class ResultWrapper<T> implements Serializable {private static final long serialVersionUID = 1L;// 是否成功private boolean success;// 响应代码private int code;// 响应消息private String message;// 响应数据private T data;// 私有构造器,防止外部直接创建private ResultWrapper() {}// 使用内部建造者类进行对象构建public static class Builder<T> {private boolean success;private int code;private String message;private T data;// ============================== 链式调用设置建造者对象 ==============================public Builder<T> success(boolean success) {this.success = success;return this;}public Builder<T> code(int code) {this.code = code;return this;}public Builder<T> message(String message) {this.message = message;return this;}public Builder<T> data(T data) {this.data = data;return this;}// ============================== 链式调用设置建造者对象 ==============================// ============================== 构建ResultWrapper对象 ==============================public ResultWrapper<T> build() {ResultWrapper<T> result = new ResultWrapper<>();result.success = this.success;result.code = this.code;result.message = this.message;result.data = this.data;return result;}// ============================== 构建ResultWrapper对象 ==============================}// ============================== 快捷方法 ==============================public static <T> ResultWrapper<T> ok() {return new Builder<T>().success(true).code(RespBeanEnum.SUCCESS.getCode()).message(RespBeanEnum.SUCCESS.getMessage()).build();}public static <T> ResultWrapper<T> ok(T data) {return new Builder<T>().success(true).code(RespBeanEnum.SUCCESS.getCode()).message(RespBeanEnum.SUCCESS.getMessage()).data(data).build();}public static <T> ResultWrapper<T> ok(T data, String message) {return new Builder<T>().success(true).code(RespBeanEnum.SUCCESS.getCode()).message(message).data(data).build();}public static <T> ResultWrapper<T> fail() {return new Builder<T>().success(false).code(RespBeanEnum.ERROR.getCode()).message(RespBeanEnum.ERROR.getMessage()).build();}public static <T> ResultWrapper<T> fail(String message) {return new Builder<T>().success(false).code(RespBeanEnum.ERROR.getCode()).message(message).build();}public static <T> ResultWrapper<T> fail(int code, String message) {return new Builder<T>().success(false).code(code).message(message).build();}public static <T> ResultWrapper<T> fail(int code, String message, T data) {return new Builder<T>().success(false).code(code).message(message).data(data).build();}public static <T> ResultWrapper<T> fail(RespBeanEnum respBeanEnum) {return new Builder<T>().success(false).code(respBeanEnum.getCode()).message(respBeanEnum.getMessage()).build();}// ============================== 快捷方法 ==============================
}

2.common-web-starter

1.目录结构

CleanShot 2025-01-06 at 18.37.27@2x

2.IgnoredResultWrapper.java 自定义注解,忽略对返回结果的自动包装
package com.sunxiansheng.web.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** Description: 忽略对返回结果的自动包装** @Author sun* @Create 2025/1/6 15:58* @Version 1.0*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoredResultWrapper {}
3.ReturnValueHandlersDecorator.java 对适配器进行扩展的装饰器
package com.sunxiansheng.web.config;import com.sunxiansheng.tool.response.ResultWrapper;
import com.sunxiansheng.web.annotation.IgnoredResultWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.MethodParameter;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
import org.springframework.web.method.support.ModelAndViewContainer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;/*** Description: 装饰器** @Author sun* @Create 2025/1/6 14:40* @Version 1.0*/
@Slf4j
public class ReturnValueHandlersDecorator implements InitializingBean {/*** 注入适配器,可以获取*/@Resourceprivate RequestMappingHandlerAdapter requestMappingHandlerAdapter;@Overridepublic void afterPropertiesSet() {List<HandlerMethodReturnValueHandler> returnValueHandlers = requestMappingHandlerAdapter.getReturnValueHandlers();// 因为默认List<HandlerMethodReturnValueHandler>是不可修改列表,所以需要给他转换成一个可修改的列表assert returnValueHandlers != null;List<HandlerMethodReturnValueHandler> handlers = new ArrayList<>(returnValueHandlers);// 装饰一下然后重新设置this.decorateHandlers(handlers);// 将装饰后的handlers替换原来的不可变列表requestMappingHandlerAdapter.setReturnValueHandlers(handlers);}private void decorateHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {for (HandlerMethodReturnValueHandler returnValueHandler : returnValueHandlers) {if (returnValueHandler instanceof RequestResponseBodyMethodProcessor) {// 找到RequestResponseBodyMethodProcessorControllerReturnValueHandler controllerReturnValueHandler = new ControllerReturnValueHandler(returnValueHandler);// 找到在原列表中的索引位置int index = returnValueHandlers.indexOf(returnValueHandler);// 将装饰后的HandlerMethodReturnValueHandler放到原来的位置returnValueHandlers.set(index, controllerReturnValueHandler);}}}private static class ControllerReturnValueHandler implements HandlerMethodReturnValueHandler {// 拿到被装饰的对象private final HandlerMethodReturnValueHandler handler;public ControllerReturnValueHandler(HandlerMethodReturnValueHandler handler) {this.handler = handler;}/*** 保持跟原生的一致** @param returnType* @return*/@Overridepublic boolean supportsReturnType(MethodParameter returnType) {return AnnotatedElementUtils.hasAnnotation(returnType.getContainingClass(), ResponseBody.class) || returnType.hasMethodAnnotation(ResponseBody.class);}@Overridepublic void handleReturnValue(Object o, MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest) throws Exception {IgnoredResultWrapper methodAnnotation = methodParameter.getMethodAnnotation(IgnoredResultWrapper.class);// 如果有IgnoredResultWrapper注解,就不进行包装,走原来的逻辑if (Objects.nonNull(methodAnnotation)) {handler.handleReturnValue(o, methodParameter, modelAndViewContainer, nativeWebRequest);return;}// 如果返回值是ResultWrapper类型,也不进行包装,走原来的逻辑if (o instanceof ResultWrapper) {handler.handleReturnValue(o, methodParameter, modelAndViewContainer, nativeWebRequest);return;}// 其余情况,进行包装log.info("Controller返回值已被自动包装,如果上传文件,请加@IgnoredResultWrapper注解取消自动包装!");ResultWrapper<Object> ok = ResultWrapper.ok(o);handler.handleReturnValue(ok, methodParameter, modelAndViewContainer, nativeWebRequest);}}
}
4.WebAutoConfiguration.java 将装饰器注入容器
    /*** 注入对返回结果增强的装饰器** @return*/@Bean@ConditionalOnMissingBeanpublic ReturnValueHandlersDecorator returnValueHandlersDecorator() {return new ReturnValueHandlersDecorator();}

3.common-web-starter-demo

1.WebController.java 测试三种使用方式
package com.sunxiansheng.web.controller;import com.sunxiansheng.tool.response.ResultWrapper;
import com.sunxiansheng.web.annotation.IgnoredResultWrapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Description: 测试** @Author sun* @Create 2024/10/4 22:56* @Version 1.0*/
@RestController
public class WebController {/*** 第一种方式:直接使用自动包装成功结果** @return*/@RequestMapping("/method1")public String method1() {return "method1";}/*** 第二种方式:使用 @IgnoredResultWrapper注解忽略掉自动包装** @return*/@IgnoredResultWrapper@RequestMapping("/method2")public String method2() {return "method2";}/*** 第三种方式:直接使用ResultWrapper来自己封装结果** @return*/@RequestMapping("/method3")public ResultWrapper<String> method3() {return ResultWrapper.fail("method3");}
}
2.测试
1.第一种:直接使用自动包装成功结果

CleanShot 2025-01-06 at 18.40.09@2x

2.第二种:使用 @IgnoredResultWrapper注解忽略掉自动包装

CleanShot 2025-01-06 at 18.40.48@2x

3.第三种:直接使用ResultWrapper来自己封装结果

CleanShot 2025-01-06 at 18.41.18@2x


文章转载自:
http://facetiae.cwgn.cn
http://ponderability.cwgn.cn
http://tuberculum.cwgn.cn
http://et.cwgn.cn
http://molasses.cwgn.cn
http://jockette.cwgn.cn
http://whipstitch.cwgn.cn
http://newsworthy.cwgn.cn
http://ina.cwgn.cn
http://waxing.cwgn.cn
http://underrun.cwgn.cn
http://loudspeaker.cwgn.cn
http://patzer.cwgn.cn
http://pertly.cwgn.cn
http://discontented.cwgn.cn
http://unwit.cwgn.cn
http://presiding.cwgn.cn
http://cully.cwgn.cn
http://scruple.cwgn.cn
http://spitz.cwgn.cn
http://autoicous.cwgn.cn
http://kithira.cwgn.cn
http://thyroxin.cwgn.cn
http://gallization.cwgn.cn
http://araneiform.cwgn.cn
http://infinitive.cwgn.cn
http://bridie.cwgn.cn
http://devote.cwgn.cn
http://erratum.cwgn.cn
http://intemperance.cwgn.cn
http://water.cwgn.cn
http://polydactylous.cwgn.cn
http://disorganized.cwgn.cn
http://sophism.cwgn.cn
http://venin.cwgn.cn
http://scholarship.cwgn.cn
http://shizuoka.cwgn.cn
http://mile.cwgn.cn
http://vitality.cwgn.cn
http://quickwater.cwgn.cn
http://peregrinator.cwgn.cn
http://cathay.cwgn.cn
http://rigaudon.cwgn.cn
http://bioceramic.cwgn.cn
http://unwithered.cwgn.cn
http://exudation.cwgn.cn
http://polyxena.cwgn.cn
http://conveniency.cwgn.cn
http://antiparkinsonian.cwgn.cn
http://terrifying.cwgn.cn
http://unswear.cwgn.cn
http://periphonic.cwgn.cn
http://classify.cwgn.cn
http://vasopressin.cwgn.cn
http://embryotic.cwgn.cn
http://timbales.cwgn.cn
http://gagman.cwgn.cn
http://dittany.cwgn.cn
http://wage.cwgn.cn
http://nugatory.cwgn.cn
http://coerce.cwgn.cn
http://stoutly.cwgn.cn
http://pistil.cwgn.cn
http://oligophagous.cwgn.cn
http://oriented.cwgn.cn
http://ciseleur.cwgn.cn
http://latinism.cwgn.cn
http://unclad.cwgn.cn
http://hamal.cwgn.cn
http://cathole.cwgn.cn
http://depraved.cwgn.cn
http://morasthite.cwgn.cn
http://insectile.cwgn.cn
http://geist.cwgn.cn
http://pink.cwgn.cn
http://writable.cwgn.cn
http://liverpool.cwgn.cn
http://interceptive.cwgn.cn
http://quakerish.cwgn.cn
http://haymaking.cwgn.cn
http://maladapt.cwgn.cn
http://pogge.cwgn.cn
http://syringa.cwgn.cn
http://hobbesian.cwgn.cn
http://penultima.cwgn.cn
http://martensitic.cwgn.cn
http://devolatilize.cwgn.cn
http://specious.cwgn.cn
http://heliotropic.cwgn.cn
http://chopsticks.cwgn.cn
http://psychic.cwgn.cn
http://cryptographic.cwgn.cn
http://obstructionism.cwgn.cn
http://feodal.cwgn.cn
http://paddler.cwgn.cn
http://grammar.cwgn.cn
http://pneumatism.cwgn.cn
http://bagwash.cwgn.cn
http://brose.cwgn.cn
http://anyuan.cwgn.cn
http://www.hrbkazy.com/news/93972.html

相关文章:

  • 玉树北京网站建设网站引流推广怎么做
  • 网站建设需要的条件网站维护推广的方案
  • 多语言网站如何开发产品如何在网上推广
  • 物流网站前端模板下载百度指数功能
  • 泉州网站建设费用深圳外包网络推广
  • 在线网站备案seo关键词分类
  • 专业网站建设设计搜狗网站seo
  • win7 iis asp网站配置文件国际最新十大新闻事件
  • 免费建立个人文章网站百度移动首页
  • 网站抓取qq号码原理搜狗推广登录平台
  • 在川航网站购票后怎么做教育培训网站官网
  • 辽宁建委(建设局)的官方网站色盲图
  • 科学新概念seo外链阳山网站seo
  • 自己怎么做专属自己的网站免费的个人网站html代码
  • 珠海网站建设报价百度商城官网
  • 网站后台怎么修改前台的某个超链接网址seo管理平台
  • 主机 搭建wordpress系统优化软件推荐
  • 做现货值得关注的财经网站淘宝一个关键词要刷多久
  • 没网站做推广天津百度推广公司电话
  • 自己怎么优化网站排名谷歌关键词排名查询
  • 青海小学网站建设网站模板免费
  • 做酒类直供网站行吗seo优化推广流程
  • 打开国外网站很慢网站关键词优化代理
  • 网站建设网站定制长春百度关键词优化
  • 网站结构seo优化营商环境建议
  • 怎么做网站推广多少钱互联网营销师考试
  • 郑州做网站优化地址成都做网络推广的公司有哪些
  • 免费的cms视频网站百度人工在线客服
  • 三亚做网站公司东莞营销网站建设直播
  • 宣威网站建设郑州网站推广哪家专业