spring swagger 配置

spring swagger 配置

  • 依赖

    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-annotations</artifactId>
        <version>1.5.20</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    
  • swagger属性

    package com.chaoyang.config.swagger;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Data
    @Component
    @ConfigurationProperties(prefix = "swagger2")
    public class SwaggerProperties {
        /**
        * 包扫描的路径
        */
        private String basePackage;
    
        /**
        * 联系人的名称
        */
        private String name;
    
        /**
        * 联系人的主页
        */
        private String url;
    
        /**
        * 联系人的邮箱
        */
        private String email;
    
        /**
        * API的标题
        */
        private String title;
    
        /**
        * API的描述
        */
        private String description;
    
        /**
        * API的版本号
        */
        private String version;
    
        /**
        * API的服务团队
        */
        private String termsOfServiceUrl;
    }
    
  • 作为一个组件注册到ioc容器内

    package com.chaoyang.config.swagger;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.*;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spi.service.contexts.SecurityContext;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    import java.util.Arrays;
    import java.util.List;
    
    
    @Configuration
    @EnableSwagger2
    public class SwaggerAutoConfiguration {
    
        private SwaggerProperties swaggerProperties;
    
        public SwaggerAutoConfiguration(SwaggerProperties swaggerProperties) {
            this.swaggerProperties = swaggerProperties;
        }
    
        @Bean
        public Docket docket() {
            Docket docket = new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
                    .paths(PathSelectors.any())
                    .build();
            // 安全的配置
            docket.securitySchemes(securitySchemes()) // 安全规则
                    .securityContexts(securityContexts()); // 安全配置的上下问
            return docket;
        }
    
        /**
        * api 信息的简介
        *
        * @return
        */
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().contact(
                            new Contact(swaggerProperties.getName(), swaggerProperties.getUrl(), swaggerProperties.getEmail())
                    )
                    .title(swaggerProperties.getTitle())
                    .description(swaggerProperties.getDescription())
                    .version(swaggerProperties.getVersion())
                    .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl())
                    .build();
    
        }
    
        /**
        * 安全的规则配置
        *
        * @return
        */
        private List<SecurityScheme> securitySchemes() {
            return Arrays.asList(new ApiKey("Authorization", "Authorization", "Authorization"));
        }
    
        /**
        * 安全的上下文
        *
        * @return
        */
        private List<SecurityContext> securityContexts() {
            return Arrays.asList(new SecurityContext(
                    Arrays.asList(new SecurityReference("Authorization", new AuthorizationScope[]{new AuthorizationScope("global", "accessResource")})),
                    PathSelectors.any()
            ));
        }
    }
    
    
  • yaml 配置

    swagger2:
      basePackage: com.chaoyang.controller
      name: common测试
      email: imock@sina.com
      title: common测试接口
      description: common测试接口
      version: V1.0.0
      termsOfServiceUrl: www.chaoyangzhichuang.com
    
posted @ 2025-08-07 09:30  巫小诗  阅读(7)  评论(0)    收藏  举报