赞
踩
1、pom文件引入jar
- <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>2.7.0</version>
- </dependency>
-
- <!-- https://mvnrepository.com/artifact/io.springfox/springfox-petstore -->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-petstore</artifactId>
- <version>2.7.0</version>
- </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依赖包
- <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>23.4-jre</version>
- </dependency>
pom.xml配置完成。
2、新建SwaggerConfig,位置随便放在applicationContext.xml中扫描路径写对就可以了
-
- @EnableWebMvc
- @EnableSwagger2
- public class SwaggerConfig extends WebMvcConfigurationSupport {
-
- /**
- * 设置swagger开关
- */
- @Value("${swagger.is.enable}")
- private boolean swagger_is_enable;
-
- /**
- * 这是一个接口自动生成器,用来生成接口的文档
- * @return
- */
- @Bean
- public Docket myDocket() {
- Docket docket = new
- Docket(DocumentationType.SWAGGER_2).enable(swagger_is_enable);
- ApiInfo apiInfo = new ApiInfoBuilder()
- .title("系统API接口文档")
- .description("前台API接口")
- .contact(new Contact("", "", ""))
- .version("1.1")
- .build();
- docket.apiInfo(apiInfo);
- //设置只生成被Api这个注解注解过的Ctrl类中有ApiOperation注解的api接口的文档
- docket.select().apis(RequestHandlerSelectors.withClassAnnotation((Class<? extends Annotation>) Api.class)).apis(RequestHandlerSelectors.withMethodAnnotation((Class<? extends Annotation>) ApiOperation.class)).build();
- return docket;
- }
-
- }
3、配置applicationContext.xml
- <!-- 加载Swagger2Config -->
- <bean class="cn.it.swagger.SwaggerConfig"/>
- <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
- <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点
- <!-- 加载Swagger2Config -->
- <bean class="com.wayboo.utils.SwaggerConfig"/>
- <mvc:resources mapping="*.html" location="apidoc/resources"/>
- <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>否则无法获取资源
- <servlet>
- <servlet-name>mvc</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext.xml</param-value>
- </init-param>
-
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>mvc</servlet-name>
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>mvc</servlet-name>
- <url-pattern>/v2/api-docs</url-pattern>
- </servlet-mapping>
8、以上就配置成功启动后可以直接访问http://localhost:8080/apidoc/resources/index.html,项目中添加注解这里不过多阐述。
参考文献:https://www.cnblogs.com/hailongchen/p/8262027.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。