欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC集成swagger遇到的问题

程序员文章站 2024-03-02 16:43:04
...
1、配置完成后,访问swagger-ui.html结果不显示controller方法

SpringMVC集成swagger遇到的问题
或者报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配置类注入其中
SpringMVC集成swagger遇到的问题
配置后,页面访问正常
SpringMVC集成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>
相关标签: spring