Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。可用于:1.接口的文档在线自动生成、2.功能测试。便于前后端对接。
1.引入swagger的依赖
<properties>
<springfox-swagger2.version>2.9.2</springfox-swagger2.version>
</properties>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox-swagger2.version}</version>
<!-- <exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>-->
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>
</dependencies>
2.添加swagger配置文件
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(true)
.select()
//.apis(RequestHandlerSelectors.basePackage("com.*.controller"))
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("项目api文档")
.description("项目名称")
.version("1.0")
.build();
}
// Swagger http://localhost:8080/swagger-ui.html
// knife4j http://localhost:8080/doc.html
}
3.添加swagger的注解
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/member/manager")
@Api(value = "/member/manager", tags = "会员管理") //用在Controller类上,说明该类的作用
public class MemberController {
private final MemberService memberService ;
@ApiOperation("会员分页列表") //用在Controller里的方法上,说明方法的作用
@PostMapping("/queryPage")
public BaseResult<PageResult<MemberPageVO>> selectMemberPageList(@RequestBody MemberReq req) {
return BaseResult.defaultSuccess(memberService.queryAllPage(req));
}
}
@Data
@ApiModel("会员列表入参") //用在类上,表示对类进行说明
public class MemberReq implements Serializable {
private static final long serialVersionUID = -7884620019551165393L;
@ApiModelProperty("会员id") //用于字段,表示对属性的说明
private Long id;
}
@EnableAsync
@EnableTransactionManagement
@EnableConfigurationProperties
//@MapperScan(basePackages = {"com.test.business.**.mapper"})
@SpringBootApplication(exclude = PropertyPlaceholderAutoConfiguration.class)
public class MyApplication {
private static final Logger logger = LoggerFactory.getLogger(MyApplication.class);
public static void main(String[] args) {
logger.info("-------------------------------- 开始启动服务 ----------------------------------------");
SpringApplication app = new SpringApplication(MyApplication.class);
app.setBannerMode(Banner.Mode.LOG);
app.run(args);
logger.info("-------------------------------- 服务启动成功 ----------------------------------------");
}
}