ITPub博客

首页 > 应用开发 > Java > Spring 4.2.2以上版本和swagger集成方案和踩过的坑

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

原创 Java 作者:fumi106 时间:2020-11-09 11:16:50 0 删除 编辑

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

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

 

Xml代码   收藏代码
  1. < dependency >   
  2.              < groupId > io.springfox </ groupId >   
  3.              < artifactId > springfox-swagger2 </ artifactId >   
  4.              < version > 2.4.0 </ version >   
  5.              < exclusions >   
  6.                  < exclusion >   
  7.                      < groupId > org.springframework </ groupId >   
  8.                      < artifactId > spring-core </ artifactId >   
  9.                  </ exclusion >   
  10.                  < exclusion >   
  11.                      < groupId > org.springframework </ groupId >   
  12.                      < artifactId > spring-beans </ artifactId >   
  13.                  </ exclusion >   
  14.                  < exclusion >   
  15.                      < groupId > org.springframework </ groupId >   
  16.                      < artifactId > spring-context </ artifactId >   
  17.                  </ exclusion >   
  18.                  < exclusion >   
  19.                      < groupId > org.springframework </ groupId >   
  20.                      < artifactId > spring-context-support </ artifactId >   
  21.                  </ exclusion >   
  22.                  < exclusion >   
  23.                      < groupId > org.springframework </ groupId >   
  24.                      < artifactId > spring-aop </ artifactId >   
  25.                  </ exclusion >   
  26.                  < exclusion >   
  27.                      < groupId > org.springframework </ groupId >   
  28.                      < artifactId > spring-tx </ artifactId >   
  29.                  </ exclusion >   
  30.                  < exclusion >   
  31.                      < groupId > org.springframework </ groupId >   
  32.                      < artifactId > spring-orm </ artifactId >   
  33.                  </ exclusion >   
  34.                  < exclusion >   
  35.                      < groupId > org.springframework </ groupId >   
  36.                      < artifactId > spring-jdbc </ artifactId >   
  37.                  </ exclusion >   
  38.                  < exclusion >   
  39.                      < groupId > org.springframework </ groupId >   
  40.                      < artifactId > spring-web </ artifactId >   
  41.                  </ exclusion >   
  42.                  < exclusion >   
  43.                      < groupId > org.springframework </ groupId >   
  44.                      < artifactId > spring-webmvc </ artifactId >   
  45.                  </ exclusion >   
  46.                  < exclusion >   
  47.                      < groupId > org.springframework </ groupId >   
  48.                      < artifactId > spring-oxm </ artifactId >   
  49.                  </ exclusion >   
  50.              </ exclusions >   
  51.          </ dependency >   
  52.          < dependency >   
  53.              < groupId > io.springfox </ groupId >   
  54.              < artifactId > springfox-swagger-ui </ artifactId >   
  55.              < version > 2.4.0 </ version >   
  56.          </ dependency >   

 

 

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

 

2. 编写Swagger的配置类:

 

Java代码   收藏代码
  1. package  com.ml.honghu.swagger.web;  
  2.   
  3. import  org.springframework.context.annotation.Bean;  
  4. import  org.springframework.context.annotation.ComponentScan;  
  5. import  org.springframework.context.annotation.Configuration;  
  6. import  org.springframework.web.servlet.config.annotation.EnableWebMvc;  
  7.   
  8. import  springfox.documentation.builders.ApiInfoBuilder;  
  9. import  springfox.documentation.builders.PathSelectors;  
  10. import  springfox.documentation.builders.RequestHandlerSelectors;  
  11. import  springfox.documentation.service.ApiInfo;  
  12. import  springfox.documentation.service.Contact;  
  13. import  springfox.documentation.spi.DocumentationType;  
  14. import  springfox.documentation.spring.web.plugins.Docket;  
  15. import  springfox.documentation.swagger2.annotations.EnableSwagger2;  
  16.   
  17. @EnableWebMvc   
  18. @EnableSwagger2   
  19. @Configuration   
  20. @ComponentScan (basePackages ={ "com.ml.honghu.**.rest" })  
  21. public   class  SwaggerConfig {  
  22.      @Bean   
  23.      public  Docket createRestApi() {  
  24.          return   new  Docket(DocumentationType.SWAGGER_2)  
  25.                 .apiInfo(apiInfo())  
  26.                 .select()  
  27.                 .apis(RequestHandlerSelectors.basePackage( "com.ml.honghu" ))  
  28.                 .paths(PathSelectors.any())  
  29.                 .build();  
  30.     }  
  31.   
  32.      private  ApiInfo apiInfo() {  
  33.          return   new  ApiInfoBuilder()  
  34.                 .title( "接口列表 v1.0" )  
  35.                 .description( "接口信息" )  
  36.                 .termsOfServiceUrl( "http://honghu.com" )  
  37.                 .contact( new  Contact( "" ,  "" ,  "HongHu" ))  
  38.                 .version( "1.1.0" )  
  39.                 .build();  
  40.     }  
  41. }  

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

 

 

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

 

Java代码   收藏代码
  1. <mvc:exclude-mapping path= "/swagger*/**" />  
  2. <mvc:exclude-mapping path= "/v2/**" />  
  3. <mvc:exclude-mapping path= "/webjars/**" />  

 

 

4. 服务配置项

 

Java代码   收藏代码
  1. <span style= "color: #ff0000;" > @Api ( "区域服务" )</span>  
  2. @RestController   
  3. @RequestMapping (value =  "/rest/area" )  
  4. public   class  AreaService  {  
  5.   
  6.      @Autowired   
  7.      private  AreaService areaService;  
  8.       
  9.     <span style= "color: #ff0000;" > @ApiOperation (value =  "区域列表" , httpMethod =  "GET" , notes =  "区域列表" )</span>  
  10.      @IsLogin   
  11.      @ResponseBody   
  12.      @RequestMapping (value =  "treeData" , method = RequestMethod.GET)  
  13.      public  List<Map<String, Object>> treeData(  
  14.             <span style= "color: #ff0000;" > @ApiParam (required =  true , value =  "区域ID" )</span>   @RequestParam (required= false ) String extId, HttpServletResponse response) {  
  15.         List<Map<String, Object>> mapList = Lists.newArrayList();  
  16.         List<Area> list = areaService.findAll();  
  17.          for  ( int  i= 0 ; i<list.size(); i++){  
  18.             Area e = list.get(i);  
  19.              if  (StringUtils.isBlank(extId) || (extId!= null  && !extId.equals(e.getId()) && e.getParentIds().indexOf( "," +extId+ "," )==- 1 )){  
  20.                 Map<String, Object> map = Maps.newHashMap();  
  21.                 map.put( "id" , e.getId());  
  22.                 map.put( "pId" , e.getParentId());  
  23.                 map.put( "name" , e.getName());  
  24.                 mapList.add(map);  
  25.             }  
  26.         }  
  27.          return  mapList;  
  28.     }  
  29. }  

 

 

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



 

到此结束!!(企业架构源码可以加求球:叁五三陆二肆柒二伍玖)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69984376/viewspace-2732943/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-09-22

  • 博文量
    51
  • 访问量
    25933