swagger3集成springBoot

1.Maven依赖

 <!--        swagger.v3-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
<!--        第三方ui包-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.6</version>
        </dependency>

2.在启动类中加入相关注解:@EnableOpenApi

@SpringBootApplication
@ComponentScan(value = {
        // 必须:扫描框架配置
        "com.manage",
        // 必须:本项目扫描路径
        "com.manage"
})
@Log4j2
@MapperScan(basePackages = "com.manage.infrastructure.persistence.mapper")
@EnableOpenApi
public class ApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }

}

3.在相关的api中加入相关注解

/**
 * 接口
 *
 * @author sx
 * @since 2024-02-18 13:39
 */
@RequestMapping(value = "/v1/user")
@RestController
@AllArgsConstructor
@Tag(name = "用户接口", description = "用户接口")
public class UserApi {

    /**
     * 应用服务
     */
    private final UserAppService userAppService;

    /**
     * 创建
     *
     * @param createRequest 创建对象
     * @return 响应结果
     */
    @PostMapping
    @Operation(summary = "创建", description = "创建")
    public ResponseResult<Void> create(@RequestBody @Valid UserCreateRequest createRequest) {
        return userAppService.create(createRequest);
    }
}

4.在请求参数中加入相关注解(返回参数都可以加相关注解)

package com.manage.application.api.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDate;

/**
 * 创建请求对象
 *
 * @author sx
 * @since 2024-02-18 13:39
 */
@Getter
@Setter
@ToString
@Schema(description = "创建请求对象")
public class UserCreateRequest {

    /**
     * 名字
     */
    @Schema(description = "名字")
    private String name;

    /**
     * 性别(F女 M男)
     */
    @Schema(description = "性别(F女 M男)")
    private String sex;

    /**
     * 年龄
     */
    @Schema(description = "年龄")
    private Integer age;

    /**
     * 出生日期
     */
    @Schema(description = "出生日期")
    private LocalDate birth;

    /**
     * 联系方式
     */
    @Schema(description = "联系方式")
    private String telephone;
}

效果如下:

5.在控制台输出swagger地址

package com.manage.api.config;

import lombok.extern.log4j.Log4j2;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Component
@Log4j2
@EnableSwagger2
@Configuration
public class SwaggerPrintConfig implements ApplicationListener<WebServerInitializedEvent> {
    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        //获取IP
        String hostAddress = "127.0.0.1";
        //获取端口号
        int port = event.getWebServer().getPort();
        //获取应用名
        String applicationName = event.getApplicationContext().getApplicationName();
        //swagger3和swagger2的地址不一样
        log.info("\n项目启动启动成功!接口文档地址: \n"+"    http://"+hostAddress+":"+event.getWebServer().getPort()+applicationName+"/swagger-ui/index.html");
    }
}

6.swagger页面设置名字

package com.manage.api.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class Swagger3 {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30).apiInfo(
                new ApiInfoBuilder()
                        .contact(new Contact("sunn", "", "2***@qq.com"))
                        .title("Swagger3测试项目")
                        .build()
        );
    }
}

7.运行代码成功

swagger页面

8.发现有多余的basic-error-controller,更改第6步的代码

package com.manage.api.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class Swagger3 {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30).apiInfo(
                        new ApiInfoBuilder()
                                .contact(new Contact("sunn", "", "2769662613@qq.com"))
                                .title("Swagger3测试项目")
                                .build()
                ) .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .build();

    }
}

9.消除成功

 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunnxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值