diff --git a/pom.xml b/pom.xml index c01c936..a34dce2 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,7 @@ <spring-cloud.version>Greenwich.BUILD-SNAPSHOT</spring-cloud.version> <fastjson_version>1.2.28</fastjson_version> <lombok_sersion>1.18.6</lombok_sersion> + <swagger2_version>2.9.2</swagger2_version> </properties> <dependencies> @@ -85,8 +86,54 @@ </exclusion> </exclusions> </dependency> + <!--spring boot--> <!-- tools--> + <!--集成swagger2,下面两个spring的配置解决springboot包 与swagger2的包冲突问题,生产部署的时候记得要去掉此swagger2的配置,开发环境开启--> + <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> + <dependency> + <groupId>org.springframework.plugin</groupId> + <artifactId>spring-plugin-core</artifactId> + <version>1.2.0.RELEASE</version><!--$NO-MVN-MAN-VER$--> + </dependency> + <dependency> + <groupId>org.springframework.plugin</groupId> + <artifactId>spring-plugin-metadata</artifactId> + <version>1.2.0.RELEASE</version><!--$NO-MVN-MAN-VER$--> + </dependency> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger-ui</artifactId> + <version>${swagger2_version}</version> + <exclusions> + <exclusion> + <groupId>org.springframework.plugin</groupId> + <artifactId>spring-plugin-core</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework.plugin</groupId> + <artifactId>spring-plugin-metadata</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger2</artifactId> + <version>${swagger2_version}</version> + <!--2.9.2集成的是M1的这两个包,跟现在用的Greenwich.BUILD-SNAPSHOT的版本的SPRING boot2的版本包有冲突。去掉--> + <exclusions> + <exclusion> + <groupId>org.springframework.plugin</groupId> + <artifactId>spring-plugin-core</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework.plugin</groupId> + <artifactId>spring-plugin-metadata</artifactId> + </exclusion> + </exclusions> + </dependency> + <!--集成swagger2--> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> diff --git a/readme.md b/readme.md index f17ff33..eb040ec 100644 --- a/readme.md +++ b/readme.md @@ -23,3 +23,4 @@ * 集成lombok,简化部分代码录入,比如实体类,方便实体及表结构修改,敏捷开发必用,使用方法见[lombok集成使用说明](https://jingyan.baidu.com/article/0a52e3f4e53ca1bf63ed725c.html) ) * 集成了单文件、多文件上传接口 +* 集成了swagger2,开发环境开启此POM配置,生产环境记得去掉。包冲突问题看POM配置文件。 \ No newline at end of file diff --git a/src/main/java/com/tianbo/warehouse/Swagger2.java b/src/main/java/com/tianbo/warehouse/Swagger2.java new file mode 100644 index 0000000..ed587be --- /dev/null +++ b/src/main/java/com/tianbo/warehouse/Swagger2.java @@ -0,0 +1,43 @@ +package com.tianbo.warehouse; + +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.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class Swagger2 { + //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + //为当前包路径 + .apis(RequestHandlerSelectors.basePackage("com.tianbo.warehouse.controller")) + .paths(PathSelectors.any()) + .build(); + } + //构建 api文档的详细信息函数,注意这里的注解引用的是哪个 + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + //页面标题 + .title("Spring Boot 测试使用 Swagger2 构建RESTful API") + //创建人 + .contact(new Contact("MarryFeng", "http://www.baidu.com", "")) + //版本号 + .version("1.0") + //描述 + .description("API 描述") + .build(); + } + + +} diff --git a/src/main/java/com/tianbo/warehouse/controller/UserController.java b/src/main/java/com/tianbo/warehouse/controller/UserController.java index 1a63d79..ae616f1 100644 --- a/src/main/java/com/tianbo/warehouse/controller/UserController.java +++ b/src/main/java/com/tianbo/warehouse/controller/UserController.java @@ -7,6 +7,10 @@ import com.tianbo.warehouse.controller.response.ResultJson; import com.tianbo.warehouse.model.USERS; import com.tianbo.warehouse.model.UserRole; import com.tianbo.warehouse.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; @@ -18,11 +22,16 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; @RestController +@RequestMapping("/user") +@Api("swaggerDemoController相关的api") public class UserController { @Autowired UserService userService; + @ApiOperation(value = "查询用户列表及信息", notes = "查询用户列表及单个用户信息") + @ApiImplicitParams({@ApiImplicitParam(name = "pageNum", value = "分页-当前页", required = false, dataType = "int",defaultValue = "1"), + @ApiImplicitParam(name = "pageSize", value = "分页-每页显示多少条", required = false, dataType = "int",defaultValue = "5")}) @GetMapping("/user/list") public PageInfo<USERS> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") int pageNum, diff --git a/src/test/java/com/tianbo/warehouse/WarehouseApplicationTests.java b/src/test/java/com/tianbo/warehouse/WarehouseApplicationTests.java index 6fcc20c..b5b1e9f 100644 --- a/src/test/java/com/tianbo/warehouse/WarehouseApplicationTests.java +++ b/src/test/java/com/tianbo/warehouse/WarehouseApplicationTests.java @@ -4,8 +4,10 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringRunner.class) +@WebAppConfiguration //解决mvn clean package打包项目websocketjavax.websocket.server.ServerContainer not available报错的问题 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class WarehouseApplicationTests {