SpringMvc配置swagger
1.pom文件
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.1</version>
</dependency>
<!--springfox的核心jar包-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.1</version>
</dependency>
<!--springfox-ui的jar包(里面包含了swagger的界面静态文件)-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- swagger依赖google的guava swagger2需要配置高版本的guava-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
注意事项:
整合swagger2 启动控制台报错 Failed to start bean ‘documentationPluginsBootstrapper’,是由于
使用swagger2出现这个异常,这个问题解决办法是因为swagger依赖google的guava,而你当前项目的guava版本与之不匹配,需将guava升到最新的版本
2.SwaggerConfig 配置文件
@Configuration
@EnableSwagger2
@EnableWebMvc
//@ComponentScan(basePackageClasses = JgBjBaseInfoCompanyApi.class) 或者
@ComponentScan(basePackages = "cn.showclear.www.controller") //要扫描的包路径
public class SwaggerConfig {
@Bean
public Docket swaggerSpringMvcPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select() //选择哪些路径和api会生成document
.apis(RequestHandlerSelectors.any())//对所有Api进行监控
.paths(PathSelectors.any()) //对所有路径进行扫描
.build();
}
/**
* api具体信息
*
* @return
*/
private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo(
"项目API文档", //标题
"", //描述
"1.0", //版本
"",
"",
"", //签名
"" //签名链接
);
return apiInfo;
}
3.applicationContext.xml配置
需要添加如下配置:
<context:component-scan base-package="cn.com.test">
<!--除去加载swaggerConfig 需要在spring-servlet中加载不然会报错 -->
<context:exclude-filter type="assignable" expression="cn.com.test.config.SwaggerConfig"/>
</context:component-scan>
原因是
spring是先加载applicationContext.xml然后再加载spring-servlet.xml(web.xml里配置)
而swagger的加载是在spring-servlet.xml配置加载的。如果我们在applicationContext.xml里也加载了swagger的话,那么会取不到一些还没加载的bean,所以就会报错
参考链接:https://blog.csdn.net/qq_37221991/article/details/105422122
3.spring-servlet.xml配置
<!-- 启用注解 -->
<context:annotation-config/>
<!--将静态资源交由默认的servlet处理-->
<mvc:default-servlet-handler/>
<!--重要!配置swagger资源不被拦截-->
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />
<!--重要!将你的SwaggerConfig配置类注入-->
<bean id="swaggerConfig" class="cn.com.test.config.SwaggerConfig"/>
4.web.xml配置
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
5.完成
在网页中输入你的项目url地址 + swagger-ui.html 就可以了
SpringBoot整合swagger
springboot整合swagger就相对简单了许多
1.pom.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.SwaggerConfig
参照springMvc的,去除@EnableWebMvc注解即可,就可以使用了