流程:
- 系统启动,扫描到api工程下的Swagger2Configuration配置类
- 配置类中指定了包路径com.xuecheng,这会找到包下被@RestController注解的类
- 根据controller的swagger注解生成接口文档
在本项目中,把类注解和方法注解到controller实现的接口上,
至于为什么注解到接口上,就可以根据实现类生成文档,理解方式两种:框架内部处理(应该是这种方式) 注解继承了(待)
Swagger2Configuration.java
package com.xuecheng.api.config;
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;
//
@Configuration
@EnableSwagger2
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xuecheng"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("学成网api文档")
.description("学成网api文档")
// .termsOfServiceUrl("/")
.version("1.0")
.build();
}
}
CmsPageControllerApi.java
package com.xuecheng.api.cms;
import com.xuecheng.framework.domain.cms.CmsPage;
import com.xuecheng.framework.model.response.QueryResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@Api(value = "cms页面管理接口",description = "cms页面管理接口,提供页面的CRUD")
public interface CmsPageControllerApi {
@ApiOperation("分页管理页面列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "page",value = "页码",required = true,paramType = "path",dataType = "int"),
@ApiImplicitParam(name = "size",value = "每页记录数",required = true,paramType = "path",dataType = "int")
})
QueryResponseResult findPageList(int page, int size, CmsPage cmsPage);
}
cmsPageController.java
@RestController
@ComponentScan("com.xuecheng.api")
public class CmsPageController implements CmsPageControllerApi {
@Autowired
private CmsPageService cmsPageService;
@GetMapping("/cms/page/{page}/{size}")
@Override
public QueryResponseResult findPageList(@PathVariable("page") int page,@PathVariable("size") int size, CmsPage cmsPage) {
QueryResponseResult result = cmsPageService.findnCmsPageList(page, size, cmsPage);
return result;
}
@GetMapping("test")
@ResponseBody
public String test() {
System.out.println("Test");
return "ok";
}
}
网友评论