• gradle多模块构建集成swagger


    1、首先说一下软件的版本:springboot:1.5.2;springcloud:D-SR1;swaager2:2.6.0;gradle:4.5。工程模块是分开的单独的entity,api,mapper,service,每一个都是一个工程。

    2、新项目需要集成swagger,看了一堆网上的例子,觉得很简单,便随意一试。

    3、我了个去,集成结束后,访问页面直接是白页面。苍天啊,你最起码给我个网上遇到问题最多的问题404啊,给我个白页面是什么鬼,没办法找问题吧。

    4、我引入jar包的位置是在整个项目根目录下build.gradle中,有两处引用(最外层dependencies,subproject中dependencies)代码在内网,此处就不贴了,模仿maven引入就行了,swwager配置如下:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig{

    @Bean
    public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo())
    .select()
    .apis(RequestHandlerSelectors.basePackage("com.web.frontend"))
    .paths(PathSelectors.none())
    .build();
    }

    private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
    .title("xxx项目 RESTful APIs")
    .description("yyblog项目api接口文档")
    .version("1.0")
    .build();
    }


    }

    5、白页面肯定是访问目标有问题,要么是没找到,要么是报错了,要么是拒绝连接,看了一下jar包中页面的位置,也怀疑像很多人遇到的问题一样,需要配

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {/**
    * 配置静态资源路径以及上传文件的路径
    *
    * @param registry
    */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    registry.addResourceHandler("/upload/**").addResourceLocations(environment.getProperty("spring.resources.static-locations"));
    /*swagger-ui*/
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    }

    6、我也配了,而且配置在swaagerConfig中丝毫没有作用,去他奶奶的,这是为什么。访问资源就没有找到啊,后来看到有些加了配置registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0);加完这个页面是有反应了,但是仍然是有问题。一时半会也没解决,偶然在解决模块间相互依赖时,找到灵感,访问不到资源,也许是由于模块化导致扫描出了问题。果然在config类上加了@ComponentScan(basePackages="com.aa.api"),同时在build.gradle中引入api的project。一切正常了。也不需要什么配置静态资源路径什么的。其实我理解的流程应该是,通过引入api工程使得整个项目对api有一个配置加载,也就是引入,但是单单引入不行,还要在需要使用的地方进行加载,也就是config类中加扫描,这样就构成了一个整体。先引入再加载。

    7、总结:使用模块构建的项目,在使用一些依赖时,包括模块依赖和jar包依赖,一定要尽可能合理并且不重复引用。遇到访问不到的问题首先考虑模块的引入是不是有问题,再具体看扫描路径。

  • 相关阅读:
    JSTL之迭代标签库
    java中的IO流
    浅谈代理模式
    TreeSet集合
    网络编程之UDP协议
    Java中的多线程
    Java中的面向对象
    JavaScript 函数表达式
    JavaScript 数据属性和访问器属性
    JavaScript 正则表达式语法
  • 原文地址:https://www.cnblogs.com/zxg-blog/p/9948018.html
Copyright © 2020-2023  润新知