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

大部分集成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模块)