Swagger默认是使用springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl来将Document转换成Swagger。可以自己写个类继承该类并根据自己的需要重写Swagger mapDocumentation(Documentation from)
@Primary
@Component("ServiceModelToSwagger2Mapper")
public class ServiceModelToSwagger2Mapper extends springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl {
@Override
public Swagger mapDocumentation(Documentation from) {
Swagger swagger=super.mapDocumentation(from);
swagger.getPaths().entrySet().stream().filter(entry->BossConstant.isSelector(entry.getKey()))
.map(entry->entry.getValue().getGet()).filter(Predicates.notNull())
.map(get->get.getTags()).filter(tags->!tags.contains(BossConstant.TAG_SELECTOR))
.forEach(tags->tags.add(BossConstant.TAG_SELECTOR));
Set<String> microServices= Sets.newTreeSet(ComparatorUtils.NATURAL_COMPARATOR);
swagger.getPaths().entrySet().removeIf(entry-> entry.getKey().startsWith(BossConstant.SERVICE_URL)||entry.getKey().startsWith(BossConstant.LISTENER_URL));
swagger.getPaths().entrySet().stream().forEach(entry->{
String url=entry.getKey();
if(!url.startsWith(BossConstant.BASE_URL)){
return;
}
String microService=Splitter.on('/').splitToList(entry.getKey()).get(2);
microServices.add(microService);
Stream.of(entry.getValue().getDelete(),entry.getValue().getGet(),entry.getValue().getPatch(),entry.getValue().getPost(),entry.getValue().getPut())
.filter(Predicates.notNull()).map(method->method.getTags()).forEach(list->list.add(microService));
});
Tag tag=swagger.getTags().stream().filter(t->TAG_SELECTOR.equals(t.getName())).findAny().orElse(null);
if(null==tag){
tag=new Tag();
tag.setName(TAG_SELECTOR);
swagger.getTags().add(tag);
}
tag.setDescription("下拉框/级联下拉框/树");
List<Tag> tags=Lists.newArrayList(tag);
for(String s:microServices){
Tag t=new Tag();
t.setName(s);
tags.add(t);
}
tags.addAll(Developer.tags());
tags.addAll(swagger.getTags());
swagger.setTags(tags);
return swagger;
}
}