美文网首页
SpringMVC多模块中,如何扩展swagger模块

SpringMVC多模块中,如何扩展swagger模块

作者: totohui | 来源:发表于2018-06-18 16:33 被阅读0次

    大部分集成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模块的做法体现了软件设计原则中的开闭原则,对扩展开放,对修改关闭。在实践中或多或少会运用到一些设计原则,只是没意识到,还未上升到理论高度,逐渐积累中。

    相关文章

      网友评论

          本文标题:SpringMVC多模块中,如何扩展swagger模块

          本文链接:https://www.haomeiwen.com/subject/uzuneftx.html