SpringMVC集成swagger遇到的问题

1、配置完成后,访问swagger-ui.html结果不显示controller方法

在这里插入图片描述
或者报No operations defined in spec!

网上大部分说是在swagger的配置类中未写明apis()这个方法里的参数,可我本地确定是配置了,还怀疑过是spring的版本和swagger的版本不兼容问题,经过反复搜索及排查,发现和配置的扫描包无关,和环境的版本号也无关(spring-4.1.6;springfox-swagger2 2.9.2;springfox-swagger-ui 2.9.2),而是因为在spring-mvc.xml中没有将自己写的swagger配置类注入其中
在这里插入图片描述
配置后,页面访问正常
在这里插入图片描述

2、对于百度查到的解决方式,在配置类的apis()中添加路径以及配置注解@ComponentScan,也做了简单了解
  • 配置类中apis()理解 ,见代码中的注释
public Docket createRestApi() {
  return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo())
    .select()
    // .apis(RequestHandlerSelectors.any())   //加载所有的controller的方法到swagger中
	//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))    //扫描所有有注解的api,待深入了解
    //只加载com.itic.appbase.applications.sys.swagger.test这个包下的controller中的方法
   .apis(RequestHandlerSelectors.basePackage("com.itic.appbase.applications.sys.swagger.test"))
   .paths(PathSelectors.any())
   .build();
 }
  • 注解@ComponentScan的理解
    该注解是spring的注解,创建一个配置类,在配置类上添加 @ComponentScan 注解。该注解默认会扫描该类所在的包下所有的配置类,相当于spring-mvc.xml文件中的 context:component-scan
<!-- 注解扫描,只扫描com.itic.appbase下的Controller -->
  <context:component-scan base-package="com.itic"
    use-default-filters="false">
    <context:include-filter type="annotation"
      expression="org.springframework.stereotype.Controller" />
  </context:component-scan>
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页