乐趣区

关于springboot:spring-boot整合swagger

依赖

    <!--swagger        -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <!--swagger-ui.html 模式        -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    <!--doc.html 模式        -->
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>swagger-bootstrap-ui</artifactId>
        <version>1.9.2</version>
    </dependency>

配置端口号

server.port=1313
#启动会报错(起因:Springfox 应用的门路匹配基于 AntPathMatcher,而 Spring Boot 2.6.X 应用的是 PathPatternMatcher。)#org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

启动类增加注解(@EnableSwagger2)

@EnableSwagger2
@SpringBootApplication
public class JavaApplication {public static void main(String[] args) {SpringApplication.run(JavaApplication.class, args);
    }

}

注解介绍

/**
 * Api 注解:定义接口名称
 * ApiOperation 注解:定义方法名称
 * ApiImplicitParam 注解:定义 param 参数的各个属性
 *
 * ApiModel 注解:定义对象名称
 * ApiModelProperty 注解:定义参数名称
 */
@Api(tags = "测试接口")
@RestController
public class TestController {@ApiOperation(value = "测试 01")
    @GetMapping("/test01")
    public String Test01(){return "Test01";}

}

拜访地址:http://localhost:1313/swagger…
或者 http://localhost:1313/doc.html

新增配置类

/**
 * @EnableSwagger2:开启 swagger,此处也须要应用。* @Profile("swagger"):指定组件在哪个环境的状况下能力被注册到容器中,不指定,任何环境下都能注册这个组件。* 
 * spring.profiles.active=swagger
 *
 */
@Configuration
@EnableSwagger2
@Profile("swagger")
public class SwaggerConfig {
    /**
     * 创立 API 利用 apiInfo() 减少 API 相干信息
     * 通过 select() 函数返回一个 ApiSelectorBuilder 实例, 用来管制哪些接口裸露给 Swagger 来展示,* 本例采纳指定扫描的包门路来定义指定要建设 API 的目录。*
     * @return
     */
    @Bean
    public Docket createRestApi() {
        // 抉择那些门路和 api 会生成 document
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).pathMapping("/").select()
                // 对所有 api 进行监控
                .apis(RequestHandlerSelectors.any())
                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)).build()
                // 配置 token
                .globalOperationParameters(setHeaderToken());
    }

    /**
     * 配置 token
     *
     * @return
     */
    private List<Parameter> setHeaderToken() {ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<>();
        tokenPar.name("Authorization").description("token").modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build();
        pars.add(tokenPar.build());
        return pars;
    }

    /**
     * 创立该 API 的根本信息(这些根本信息会展当初文档页面中)*
     * @return
     */
    private ApiInfo apiInfo() {return new ApiInfoBuilder().title("测试接口文档").description("测试接口文档").version("1.0").build();}

}
退出移动版