温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中怎么利用Swagger配置扫描接口

发布时间:2021-08-05 14:07:07 来源:亿速云 阅读:219 作者:Leah 栏目:开发技术

本篇文章为大家展示了Java中怎么利用Swagger配置扫描接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1. Swagger--配置扫描接口及开关

1.1 配置扫描接口

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具体参数
     */
    @Bean
    public Docket docket() {
        /*
         * 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
         * basePackage(final String basePackage) // 根据包路径扫描接口(最常用)
         * any() 扫描所有,项目中的所有接口都会被扫描到
         * none() 不扫描接口
         * 通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
         * withMethodAnnotation(final Class<? extends Annotation> annotation)
         * 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
         * withClassAnnotation(final Class<? extends Annotation> annotation)
         */
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).build();
    }

运行结果(因为现在只扫描了com.tian.swagger.controller 的包 所以只会有一个HelloController):

Java中怎么利用Swagger配置扫描接口

1.2 配置接口扫描过滤

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具体参数
     */
    @Bean
    public Docket docket() {
        /*
         * 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
         * basePackage(final String basePackage) // 根据包路径扫描接口
         * any() 扫描所有,项目中的所有接口都会被扫描到
         * none() 不扫描接口
         * 通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
         * withMethodAnnotation(final Class<? extends Annotation> annotation)
         * 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
         * withClassAnnotation(final Class<? extends Annotation> annotation)
         */
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();
    }

这里只选择了请求路径包含了/tian下的所有接口

这里可以选择的参数有:

  • any() // 任何请求都扫描

  • none() // 任何请求都不扫描

  • regex(final String pathRegex) // 通过正则表达式控制

  • ant(final String antPattern) // 通过ant()控制


1.3 配置Swagger开关

enable(boolean) 表示是否启用Swagger 默认为true(启用) 如果为false,则Swagger不能在游览器中访问

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具体参数
     */
    @Bean
    public Docket docket() {
        // enable(boolean) 表示是否启用Swagger 默认为true(启用) 如果为false,则Swagger不能在游览器中访问
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(false).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();
    }

运行结果:

Java中怎么利用Swagger配置扫描接口

1.4 我只希望我的Swagger在生产环境中使用,在发布的时候不使用。怎么实现?

  1. 判断是不是生产环境,是则 flag = false,否则 flag = true

  2. 注入enable(flag)

1.4.1 准备工作,新建2个配置文件

Java中怎么利用Swagger配置扫描接口

application.properties

spring.profiles.active=dev

application-dev.properties

server.port=8081

application-pro.properties

server.port=8082
1.4.2 代码实现

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具体参数
     */
    @Bean
    // org.springframework.core.env.Environment
    public Docket docket(Environment environment) {
        // 设置要显示swagger的环境 这里是 dev 和 test 环境
        // org.springframework.core.env.Profiles
        Profiles profiles = Profiles.of("dev", "test");
        // 判断当前是否处于该环境
        // 通过 enable() 接收此参数判断是否要显示
        boolean flag = environment.acceptsProfiles(profiles);


        // enable(boolean) 表示是否启用Swagger 默认为true(启用) 如果为false,则Swagger不能在游览器中访问
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(flag).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();
    }

启动测试01:Profiles 里面包含 dev

Java中怎么利用Swagger配置扫描接口

启动测试01:Profiles 里面不包含 dev

Profiles profiles = Profiles.of("test");

Java中怎么利用Swagger配置扫描接口

上述内容就是Java中怎么利用Swagger配置扫描接口,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI