当前位置:   article > 正文

SSM项目配置Swagger2(Maven)之web配置springmvc是*.XXX配置,Swagger2本地化_ssm swagger2 maven

ssm swagger2 maven

1、pom文件引入jar

  1. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger-ui</artifactId>
  5. <version>2.7.0</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-petstore -->
  8. <dependency>
  9. <groupId>io.springfox</groupId>
  10. <artifactId>springfox-petstore</artifactId>
  11. <version>2.7.0</version>
  12. </dependency>

导入以上两个包基本上就是够用了,不过因为各自项目配置的问题,有些项目只导入上面两个包会报错

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NoSuchMethodError: com.google.common.collect.Multimaps.asMap(Lcom/google/common/collect/ListMultimap;)Ljava/util/Map;
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)

如果启动时报以上的错说明需要导入Google依赖包

  1. <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
  2. <dependency>
  3. <groupId>com.google.guava</groupId>
  4. <artifactId>guava</artifactId>
  5. <version>23.4-jre</version>
  6. </dependency>

 pom.xml配置完成。

2、新建SwaggerConfig,位置随便放在applicationContext.xml中扫描路径写对就可以了

  1. @EnableWebMvc
  2. @EnableSwagger2
  3. public class SwaggerConfig extends WebMvcConfigurationSupport {
  4. /**
  5. * 设置swagger开关
  6. */
  7. @Value("${swagger.is.enable}")
  8. private boolean swagger_is_enable;
  9. /**
  10. * 这是一个接口自动生成器,用来生成接口的文档
  11. * @return
  12. */
  13. @Bean
  14. public Docket myDocket() {
  15. Docket docket = new
  16. Docket(DocumentationType.SWAGGER_2).enable(swagger_is_enable);
  17. ApiInfo apiInfo = new ApiInfoBuilder()
  18. .title("系统API接口文档")
  19. .description("前台API接口")
  20. .contact(new Contact("", "", ""))
  21. .version("1.1")
  22. .build();
  23. docket.apiInfo(apiInfo);
  24. //设置只生成被Api这个注解注解过的Ctrl类中有ApiOperation注解的api接口的文档
  25. docket.select().apis(RequestHandlerSelectors.withClassAnnotation((Class<? extends Annotation>) Api.class)).apis(RequestHandlerSelectors.withMethodAnnotation((Class<? extends Annotation>) ApiOperation.class)).build();
  26. return docket;
  27. }
  28. }

3、配置applicationContext.xml

  1. <!-- 加载Swagger2Config -->
  2. <bean class="cn.it.swagger.SwaggerConfig"/>
  3. <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
  4. <mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>

 以上三行配置 
如果是boot项目 配置基本上就配置完成,这里不做多写。SSM项目web.xml中springmvc中配置是
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>的配置的也配置完成,启动后可以直接访问http://localhost:8080/swagger-ui.html


4、以下做特殊说明关于SSM项目web.xml中springmvc中配置是

<servlet-name>mvc</servlet-name>
<url-pattern>*.xxx</url-pattern>配置的,

用以上配置无法成功,一直弹出Unable to infer base url...

GET http://localhost:8080/xiangmu/swagger-resources/configuration/ui 404 (Not Found)

的配置,(或许有的项目配置的也是*.xxx也可以直接成功,笔者遇见的是本身的项目配置是*.action)笔者在集成的时候就是遇到了一直404的错误,查阅了大量的资后,发现大部分都在说如果不配置成<url-pattern>/</url-pattern>是无法成功的却没给解决办法,/ 与 *.action 无法进行切换,切换成 / 后项目原路径失效,改动太大,后来找到了一个本地化的方法,弃用swagger-ui原生路径把swagger-ui本地化

如是这种情况略去3步,在applicationContext.xml中添加apidoc/resources路径可随自己设置具体看第5点

  1. <!-- 加载Swagger2Config -->
  2. <bean class="com.wayboo.utils.SwaggerConfig"/>
  3. <mvc:resources mapping="*.html" location="apidoc/resources"/>
  4. <mvc:resources mapping="/**" location="apidoc/"/>

5、从https://github.com/swagger-api/swagger-ui 获取其所有的 dist 目录下东西放到需要集成的项目里

6、并打开复制过来的 index.html,修改 url

写到这的时候发现本地化后这个路径时写死的,不方便大家克隆代码后还要自行修改自己的路径(每个人使用的路径端口号不相同),所以改成了动态获取

7、在web.xml中新增<url-pattern>/v2/api-docs</url-pattern>否则无法获取资源

  1. <servlet>
  2. <servlet-name>mvc</servlet-name>
  3. <servlet-class>
  4. org.springframework.web.servlet.DispatcherServlet
  5. </servlet-class>
  6. <init-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>/WEB-INF/applicationContext.xml</param-value>
  9. </init-param>
  10. <load-on-startup>1</load-on-startup>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>mvc</servlet-name>
  14. <url-pattern>*.action</url-pattern>
  15. </servlet-mapping>
  16. <servlet-mapping>
  17. <servlet-name>mvc</servlet-name>
  18. <url-pattern>/v2/api-docs</url-pattern>
  19. </servlet-mapping>

 8、以上就配置成功启动后可以直接访问http://localhost:8080/apidoc/resources/index.html,项目中添加注解这里不过多阐述。

参考文献:https://www.cnblogs.com/hailongchen/p/8262027.html

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号