SpringMVC + Swagger2
Springboot + Swagger2
今天学习了一下Swagger2这个文档框架,按照网上博文的配置出现了一些问题,自己写个小笔记,免得以后又入坑
先SpringMVC + Swagger2
Swagger必须的配置文件
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* Swagger2配置类
*通过@Configuration注解,
* 让Spring来加载该类配置。
* 再通过@EnableSwagger2注解来启用Swagger2。
* 反问地址: http://localhost:8080/swagger-ui.html
*/
@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfiguration {
/**
* 创建API应用
* apiInfo() 增加API相关信息
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
* 本例采用指定扫描的包路径来定义指定要建立API的目录。
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.itbook.controller"))//这里填写controller类路径
.paths(PathSelectors.any()) .build();
}
/** *
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://项目实际地址/swagger-ui.html
* @return
* */
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring MVC中使用Swagger2构建RESTful APIs")
.description("")
.termsOfServiceUrl("http://www.baidu.com")
//.contact("shao")
.version("1.0")
.build();
}
}
在SpringMVC.xml加下面的代码
<!--重要!配置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="com.itbook.config.SwaggerConfiguration"/>
pom.xml加入需要的依赖
<jackson.version>2.4.3</jackson.version>
<swagger-version>2.4.0</swagger-version>
上面是版本,版本不对应会报错,这点有点傻屌
<!-- 构建Restful API -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger-version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>
下面Springboot + Swagger2
pom.xml
<!-- 构建Restful API -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
配置文件
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* Swagger2配置类
*通过@Configuration注解,
* 让Spring来加载该类配置。
* 再通过@EnableSwagger2注解来启用Swagger2。
* 访问地址:http://localhost:8080/swagger-ui.html
*/
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
/**
* 创建API应用
* apiInfo() 增加API相关信息
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
* 本例采用指定扫描的包路径来定义指定要建立API的目录。
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))//这里填写controller类路径
.paths(PathSelectors.any()) .build();
}
/** *
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://项目实际地址/swagger-ui.html
* @return
* */
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring MVC中使用Swagger2构建RESTful APIs")
.description("")
.termsOfServiceUrl("http://www.baidu.com")
//.contact("shao")
.version("1.0")
.build();
}
}
启动类那里
@SpringBootApplication
@EnableSwagger2
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
注意加@EnableSwagger2
文档访问地址: http://localhost:8080/swagger-ui.html
就可以看到你的文档了