我爱布朗熊 2023-03-16 21:49 采纳率: 75%
浏览 26

springboot集成Swagger并修改Swagger默认ApiInfo页面不现实

如下所示,是我的代码:

@Configuration   //加入到容器里面
@EnableSwagger2 //开启Swagger
public class SwaggerConfig {

//  配置了Swagger的Docket实例
    @Bean
    public Docket docket() {
//        Docket有很多的配置,我们可以先配置一个apiInfo()
//        apiInfo()里面需要传入一个ApiInfo的参数,那我们就在下面定义一个
      return new Docket(DocumentationType.SWAGGER_2)
              .apiInfo(apiInfo());
    }

//   配置Swagger信息 = apiInfo
    private ApiInfo apiInfo(){
//      下面的这套配置就把原来的static代码块覆盖掉
//      作者信息,通过查看源码得知
        Contact contact = new Contact("张靖奇", "https://blog.kuangstudy.com/", "1149345976@qq.com");
        return new ApiInfo(
                "张靖奇的API文档",
                "练习!!!!!!!",
                "v1.0",
                "https://blog.kuangstudy.com/",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList()
        );
    }
}

我的新的ApiInfo的配置按说已经把默认的配置覆盖掉才对,但是我访问页面后,依然是默认的配置

img

  • 写回答

3条回答 默认 最新

  • 「已注销」 2023-03-16 22:35
    关注

    参考GPT和自己的思路:

    你可以尝试刷新Swagger的缓存并重新生成文档来解决这个问题。你可以添加@Bean方法swaggerResourcesProvider(),示例代码如下:

    @Bean
    public SwaggerResourcesProvider swaggerResourcesProvider() {
        return () -> {
            List<SwaggerResource> resources = new ArrayList<>();
            resources.add(swaggerResource("default",
                    "/v2/api-docs", "2.0"));
            return resources;
        };
    }
    

    这个方法返回一个SwaggerResourcesProvider,这个接口是用来提供Swagger的JSON描述文档,Swagger UI会读取这个接口提供的文档来渲染页面。可以通过覆盖这个接口的实现来改变Swagger UI展示的内容。

    同时,你可以使用Swagger-Bootstrap-UI工具,它可以自定义Swagger UI页面,并提供更加丰富的功能。你可以在Spring Boot中使用它来达到你所期望的效果。你可以通过以下步骤来实现:

    1. pom.xml文件中添加以下Dependency,以导入Swagger-Bootstrap-UI:
    <dependency>
      <groupId>com.github.xiaoymin</groupId>
      <artifactId>swagger-bootstrap-ui</artifactId>
      <version>1.9.6</version>
    </dependency>
    
    1. 修改SwaggerConfig.java,以实现使用Swagger-Bootstrap-UI:
    @Configuration
    @EnableSwagger2
    @EnableSwaggerBootstrapUI
    public class SwaggerConfig {
    
        @Bean
        public Docket docket() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.example.demo"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("API文档")
                    .description("demo")
                    .version("1.0")
                    .build();
        }
    }
    

    这样修改后,你应该就可以使用Swagger-Bootstrap-UI,并展示你自定义的ApiInfo了。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月16日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀