大部分集成swagger项目,都是在项目中修改配置文件,新建swagger配置类。其实更合适的做法是新建一个swagger模块,需要加入swagger的模块只要引入这个模块就可以了。
1. 在需要引入swagger模块的模块,pom文件引入swagger依赖
com.imooc imooc-single-mvc-swagger 0.0.1-SNAPSHOT
2. 在类路径下面resource文件夹下,新建swagger.properties
swagger.basePackage=com.imooc.web.controller
swagger.title=mytitle
3.在web.xml中,加入前端控制器的swagger配置。
org.springframework.web.servlet.DispatcherServlet
(注意,DispatcherServlet的url-pattern不能是*.action)
classpath:spring/springmvc.xml,classpath:spring/springmvc-swagger.xml
关于如何新建一个swagger模块,可以参考以下的链接
https://my.oschina.net/wangmengjun/blog/907679
本人做了如下修改,新建了SwaggerInfo类,去读取配置文件swagger.properties里的包扫描路径和title等一些需要定制化的数据,因为各个模块的属性是不一样的;
SwaggerConfig: 会去swaggerInfo里拿包路径。
@Bean
public Docket controllerApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName(swaggerInfo.getGroupName())
.apiInfo(apiInfo());
ApiSelectorBuilder builder = docket.select();
if (!StringUtils.isEmpty(swaggerInfo.getBasePackage())) {
builder = builder.apis(RequestHandlerSelectors.basePackage(swaggerInfo.getBasePackage()));
}
if (!StringUtils.isEmpty(swaggerInfo.getAntPath())) {
builder = builder.paths(PathSelectors.ant(swaggerInfo.getAntPath()));
}
return builder.build();
}
最后总结一下,扩展swagger模块的做法体现了软件设计原则中的开闭原则,对扩展开放,对修改关闭。在实践中或多或少会运用到一些设计原则,只是没意识到,还未上升到理论高度,逐渐积累中。
网友评论