通过Configuration装配Swaggers+knife4j属性(更为方便,安全的配置方式)

通过Configuration装配Swaggers+knife4j属性(更为方便,安全的配置方式)

1、系统配置(首先读取系统配置,把自定义属性对象作为系统对象的属性加入进来)

注解解释:

@Data:lombok包中的注解,作用在类上,提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

@ConfigurationProperties 的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类。请注意以下几点:

· 前缀定义了哪些外部属性将绑定到类的字段上
· 根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
· 我们可以简单地用一个值初始化一个字段来定义一个默认值
· 类本身可以是包私有的
· 类的字段必须有公共 setter 方法

上代码:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * @description:
 * @author: YangMian
 * @time: 2021/6/22 10:40
 * @package: com.yang.barry.cn.blog.system.propertie
 */
@Data
@Component
@Configuration
@ConfigurationProperties(prefix = "blog")
public class SystemPropertie {

    private SwaggerProperties swagger = new SwaggerProperties();
}

2、Swagger2需要的参数对象

/**
 * @description:
 * @author: YangMian
 * @time: 2021/6/22 10:42
 * @package: com.yang.barry.cn.blog.system.propertie
 */
@Data
public class SwaggerProperties {
    private String basePackage;
    private String title;
    private String description;
    private String version;
    private String author;
    private String url;
    private String email;
    private String license;
    private String licenseUrl;
}

3、Swagger2的配置文件

在这里会遇到一个问题就是swagger2的核心包的版本问题,升级为2.9.2就可以了

	<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import com.yang.barry.cn.blog.system.propertie.SwaggerProperties;
import com.yang.barry.cn.blog.system.propertie.SystemPropertie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.Collections;

/**
 * @description:
 * @author: YangMian
 * @time: 2021/6/22 10:51
 * @package: com.yang.barry.cn.blog.system.config
 */
@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {

    @Autowired
    private SystemPropertie properties;

    @Bean
    public Docket swaggerApi() {
        SwaggerProperties swagger = properties.getSwagger();
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage(swagger.getBasePackage()))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo(swagger));
    }

    private ApiInfo apiInfo(SwaggerProperties swagger) {
        return new ApiInfo(
                swagger.getTitle(),
                swagger.getDescription(),
                swagger.getVersion(),
                null,
                new Contact(swagger.getAuthor(), swagger.getUrl(), swagger.getEmail()),
                swagger.getLicense(), swagger.getLicenseUrl(), Collections.emptyList());
    }
}

4、Yml配置文件写入配置

blog:
  # Swagger相关配置
  swagger:
    basePackage: cc.yang.demo
    title: Yang API
    description: Yang API Document.
    version: 2.0
    author: Yang
    url:
    email:
    license: Apache 2.0
    licenseUrl: https://www.apache.org/licenses/LICENSE-2.0.html
posted @ 2021-06-22 14:04  白衣の  阅读(355)  评论(1编辑  收藏  举报