美文网首页我爱编程
Spring 4.2.2以上版本和swagger集成方案和踩过的

Spring 4.2.2以上版本和swagger集成方案和踩过的

作者: 安琪拉_4b7e | 来源:发表于2017-11-08 08:35 被阅读0次

    因为公司使用的spring版本太高,在集成swagger的时候会存在一些问题,而网上的很多实例大多都是版本比较低的,为了是朋友们少才坑,我这边将集成的过程记录一下:

    1. 引入spring、swagger的相关jar包(springfox-swagger2、springfox-swagger-ui),在pom.xml中配置:

    Xml代码

    io.springfox

    springfox-swagger2

    2.4.0

    org.springframework

    spring-core

    org.springframework

    spring-beans

    org.springframework

    spring-context

    org.springframework

    spring-context-support

    org.springframework

    spring-aop

    org.springframework

    spring-tx

    org.springframework

    spring-orm

    org.springframework

    spring-jdbc

    org.springframework

    spring-web

    org.springframework

    spring-webmvc

    org.springframework

    spring-oxm

    io.springfox

    springfox-swagger-ui

    2.4.0

    io.springfox

    springfox-swagger2

    2.4.0

    org.springframework

    spring-core

    org.springframework

    spring-beans

    org.springframework

    spring-context

    org.springframework

    spring-context-support

    org.springframework

    spring-aop

    org.springframework

    spring-tx

    org.springframework

    spring-orm

    org.springframework

    spring-jdbc

    org.springframework

    spring-web

    org.springframework

    spring-webmvc

    org.springframework

    spring-oxm

    io.springfox

    springfox-swagger-ui

    2.4.0

    提醒: 特别注意,springfox-swagger2在集成的时候,已经引入了spring的相关jar,特别是spring-context、spring-context-support的版本和项目中使用的版本完全不一致,项目在启动的时候出现很多包冲突的问题,这边在引入pom.xml文件的时候过滤掉了spring的相关jar包,如绿色标志。

    2. 编写Swagger的配置类:

    Java代码

    package com.ml.honghu.swagger.web;

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.ComponentScan;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.web.servlet.config.annotation.EnableWebMvc;

    import springfox.documentation.builders.ApiInfoBuilder;

    import springfox.documentation.builders.PathSelectors;

    import springfox.documentation.builders.RequestHandlerSelectors;

    import springfox.documentation.service.ApiInfo;

    import springfox.documentation.service.Contact;

    import springfox.documentation.spi.DocumentationType;

    import springfox.documentation.spring.web.plugins.Docket;

    import springfox.documentation.swagger2.annotations.EnableSwagger2;

    @EnableWebMvc

    @EnableSwagger2

    @Configuration

    @ComponentScan(basePackages ={"com.ml.honghu.**.rest"})

    publicclass SwaggerConfig {

    @Bean

    public Docket createRestApi() {

    returnnew Docket(DocumentationType.SWAGGER_2)

    .apiInfo(apiInfo())

    .select()

    .apis(RequestHandlerSelectors.basePackage("com.ml.honghu"))

    .paths(PathSelectors.any())

    .build();

    }

    private ApiInfo apiInfo() {

    returnnew ApiInfoBuilder()

    .title("接口列表 v1.0")

    .description("接口信息")

    .termsOfServiceUrl("http://honghu.com")

    .contact(new Contact("","","HongHu"))

    .version("1.1.0")

    .build();

    }

    }

    package com.ml.honghu.swagger.web;

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.ComponentScan;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.web.servlet.config.annotation.EnableWebMvc;

    import springfox.documentation.builders.ApiInfoBuilder;

    import springfox.documentation.builders.PathSelectors;

    import springfox.documentation.builders.RequestHandlerSelectors;

    import springfox.documentation.service.ApiInfo;

    import springfox.documentation.service.Contact;

    import springfox.documentation.spi.DocumentationType;

    import springfox.documentation.spring.web.plugins.Docket;

    import springfox.documentation.swagger2.annotations.EnableSwagger2;

    @EnableWebMvc

    @EnableSwagger2

    @Configuration

    @ComponentScan(basePackages ={"com.ml.honghu.**.rest"})

    public class SwaggerConfig {

    @Bean

    public Docket createRestApi() {

    return new Docket(DocumentationType.SWAGGER_2)

    .apiInfo(apiInfo())

    .select()

    .apis(RequestHandlerSelectors.basePackage("com.ml.honghu"))

    .paths(PathSelectors.any())

    .build();

    }

    private ApiInfo apiInfo() {

    return new ApiInfoBuilder()

    .title("接口列表 v1.0")

    .description("接口信息")

    .termsOfServiceUrl("http://honghu.com")

    .contact(new Contact("", "", "HongHu"))

    .version("1.1.0")

    .build();

    }

    }

    提醒:注意红色标注的地方

    3. 在spring-mvc.xml文件中进行过滤器的配置,过滤掉swagger的相关访问配置:

    Java代码

    4. 服务配置项

    Java代码

    @Api("区域服务")

    @RestController

    @RequestMapping(value ="/rest/area")

    publicclass AreaService  {

    @Autowired

    private AreaService areaService;

    @ApiOperation(value ="区域列表", httpMethod ="GET", notes ="区域列表")

    @IsLogin

    @ResponseBody

    @RequestMapping(value ="treeData", method = RequestMethod.GET)

    public List> treeData(

    @ApiParam(required =true, value ="区域ID")@RequestParam(required=false) String extId, HttpServletResponse response) {

    List> mapList = Lists.newArrayList();

    List list = areaService.findAll();

    for (int i=0; i

    Area e = list.get(i);

    if (StringUtils.isBlank(extId) || (extId!=null && !extId.equals(e.getId()) && e.getParentIds().indexOf(","+extId+",")==-1)){

    Map map = Maps.newHashMap();

    map.put("id", e.getId());

    map.put("pId", e.getParentId());

    map.put("name", e.getName());

    mapList.add(map);

    }

    }

    return mapList;

    }

    }

    @Api("区域服务")

    @RestController

    @RequestMapping(value = "/rest/area")

    public class AreaService  {

    @Autowired

    private AreaService areaService;

    @ApiOperation(value = "区域列表", httpMethod = "GET", notes = "区域列表")

    @IsLogin

    @ResponseBody

    @RequestMapping(value = "treeData", method = RequestMethod.GET)

    public List> treeData(

    @ApiParam(required = true, value = "区域ID")  @RequestParam(required=false) String extId, HttpServletResponse response) {

    List> mapList = Lists.newArrayList();

    List list = areaService.findAll();

    for (int i=0; i

    Area e = list.get(i);

    if (StringUtils.isBlank(extId) || (extId!=null && !extId.equals(e.getId()) && e.getParentIds().indexOf(","+extId+",")==-1)){

    Map map = Maps.newHashMap();

    map.put("id", e.getId());

    map.put("pId", e.getParentId());

    map.put("name", e.getName());

    mapList.add(map);

    }

    }

    return mapList;

    }

    }

    4. 启动项目,查看结果:

    愿意了解框架技术或者源码的朋友直接求求交流分享技术:3133806896

    分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨

    更多详细源码参考来源

    相关文章

      网友评论

        本文标题:Spring 4.2.2以上版本和swagger集成方案和踩过的

        本文链接:https://www.haomeiwen.com/subject/wecjmxtx.html