我爱布朗熊 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日

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使