如下所示,是我的代码:
@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的配置按说已经把默认的配置覆盖掉才对,但是我访问页面后,依然是默认的配置
参考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中使用它来达到你所期望的效果。你可以通过以下步骤来实现:
pom.xml
文件中添加以下Dependency,以导入Swagger-Bootstrap-UI:<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
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了。
参考GPT和自己的思路:
根据你提供的代码和描述,可能是因为你的Swagger配置类没有被正确加载,导致修改后的ApiInfo并没有生效。你可以尝试以下步骤:
如果以上步骤都没有解决问题,也可以尝试在Swagger配置类中添加一些其他配置,例如扫描的Controller包路径等,以确保配置类被正确加载和起作用。
确定不用 ApiInfoBuilder 吗? return new ApiInfoBuilder().xxx.xxx.xxx.build()