栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使大张旗鼓地处理自定义控制器级别的PathVariable注释?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使大张旗鼓地处理自定义控制器级别的PathVariable注释?

好的,我知道了。这是解决方案。该bean需要在上下文中注册。Swagger将发现该bean并将其用作丰富操作的插件之一

import java.util.ArrayList;import java.util.List;import org.apache.log4j.Logger;import org.springframework.core.annotation.Order;import com.fasterxml.classmate.TypeResolver;import com.google.common.base.Optional;import springfox.documentation.builders.ParameterBuilder;import springfox.documentation.schema.ModelRef;import springfox.documentation.service.Parameter;import springfox.documentation.spi.documentationType;import springfox.documentation.spi.service.OperationBuilderPlugin;import springfox.documentation.spi.service.contexts.OperationContext;import springfox.documentation.swagger.common.SwaggerPluginSupport;@Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER + 1000)public class CommonPathVariableOperationBuilderPlugin implements OperationBuilderPlugin {    protected Logger log = Logger.getLogger(getClass());    private TypeResolver typeResolver;    public CommonPathVariableOperationBuilderPlugin(TypeResolver typeResolver) {        this.typeResolver = typeResolver;    }    @Override    public boolean supports(documentationType delimiter) {        return true;    }    @Override    public void apply(OperationContext opCtx) {        List<Parameter> ret = new ArrayList<Parameter>();        Optional<HasCommonPathVariable> annSingle = opCtx.findControllerAnnotation(HasCommonPathVariable.class);        if (annSingle.isPresent()) { ret.add(addParameter(annSingle.get()));        }        Optional<HasCommonPathVariables> annPlural = opCtx.findControllerAnnotation(HasCommonPathVariables.class);        if (annPlural.isPresent()) { for (HasCommonPathVariable ann : annPlural.get().value()) {     ret.add(addParameter(ann)); }        }        opCtx.operationBuilder().parameters(ret);    }    private Parameter addParameter(HasCommonPathVariable ann) {        ParameterBuilder pb = new ParameterBuilder();        pb.parameterType("path").name(ann.name()).type(typeResolver.resolve(ann.type()));        pb.modelRef(new ModelRef("string"));        pb.required(true);        if (!"".equals(ann.defaultValue())) { pb.defaultValue(ann.defaultValue());        }        return pb.build();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号