快速在SpringBoot项目中集成Swagger前端
<dependency> <groupId>cn.gjing</groupId> <artifactId>tools-starter-swagger</artifactId> <version>1.3.0</version> </dependency>
该注解能够用在任何类
上, 案例中将其用在启动类上java
@SpringBootApplication @EnableSwagger public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
在进行了第二步以后, 已经能够正常使用Swagger, 各个属性都提供了默认值, 固然若是须要本身设置一些属性也能够, 全部属性以下:git
swagger: contact: email: 联系邮箱 name: 联系人昵称 url: 联系人地址 title: 标题 description: 描述 base-package: 接口所在包路径 path-type: 接口选择规则类型, 共分为: ALL(全部接口), REGEX(符合正则), ANT(符合路径)三个类型, 默认为ALL类型 path-pattern: 接口匹配规则,在path-type类型不为 "ALL" 的状况下必须设置,不然抛非法参数异常 exclude-pattern: 排除路径,默认使用正则表达式方式,可在pathType设置为其余类型(pathType类型为ALL时默认走正则) terms-of-service-url: 服务条款 license: 许可证 license-url: 许可证地址
@Configuration public class DemoConfig { @Bean public SwaggerBean swaggerBean() { return SwaggerBean.builder() .basePackage("com.xxx.xxx") .pathType(PathType.ALL) .title("标题") .termsOfServiceUrl("http://127.0.0.1") .license("XXXX") .licenseUrl("http://xxx.xx.xx") .description("描述") .build(); } }
在实际工做中, 每每是多个服务的, 这样前端须要记住每一个服务的地址, 显然太麻烦, 因此能够采用聚合文档模式, 将多个项目都聚合在一个服务里, 一般聚合在网关里, 毕竟每一个服务都是走网关过得, 该模式限于SpringCloud环境
, 且每一个服务都在同一个注册中心下
, 参考配置以下:github
server: port: 8080 spring: application: name: zuul-server eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ zuul: routes: projectA: serviceId: web1 path: /demo/** swagger: resources: enable: 是否开启聚合模式, 默认 False register-me: 当前项目的文档是否也要加入聚合, 默认 true # 服务列表 service-list: - projectA: 这里能够随便定义 view: 下拉选择时展现的名字, 通常用于标识对应文档的名字 service: 跟随zuul网关路由的path而定,如上为:/demo/**,那么这里应该填demo - projectB: view: 项目b service: demo
/** * @author Gjing **/ @Configuration public class GatewayConfig { @Bean public SwaggerResources swaggerResources() { List<Map<String, SwaggerService>> serviceList = new ArrayList<>(); Map<String, SwaggerService> service = new HashMap<>(); service.put("projectA", SwaggerService.builder().view("项目A").service("demo").build()); serviceList.add(service); return SwaggerResources.builder() .enable(true) .registerMe(true) .serviceList(serviceList) .build(); } }