Spring Boot 升级到版本 3 后,我尝试从 Swagger 迁移到 OpenAPI。 项目依赖于 Apache CXF。 如何重写 swagger 配置?
那是在 OpenApi 之前:
@Configuration
public class SwaggerConfiguration {
@Bean
public Swagger2Feature swagger2Feature() {
Swagger2Feature swagger = new Swagger2Feature();
swagger.setVersion(*version*);
swagger.setBasePath(*basePath*);
swagger.setPrettyPrint(true);
swagger.setSchemes(new String[]{"https", "http"});
swagger.setContact(*contact*);
swagger.setDescription(*description*);
swagger.setTitle(*title*);
swagger.setSupportSwaggerUi(true);
swagger.setHost(*host*);
return swagger;
}
}
我尝试将 Swagger2Feature 替换为 OpenApiFeature,但 swagger ui 之后无法打开。
@Bean
public OpenApiFeature openApiFeature() {
OpenApiFeature openApi = new OpenApiFeature();
openApi.setVersion(*version*);
openApi.setPrettyPrint(true);
openApi.setContactEmail(*email*);
openApi.setDescription(*description*);
openApi.setTitle(*title*);
openApi.setSupportSwaggerUi(true);
openApi.setSwaggerUiConfig(
new SwaggerUiConfig()
.url("/openapi.json"));
return openApi;
}
解决方案:只需将interface中的@Path注解替换为impl即可。 如果 @Path 注释不在类上,则使用 openapi 的 Jaxrs 看不到控制器。
示例:
不起作用:
@Path(/some)
interface ExampleController{}
class ExampleControllerImpl implements ExampleController{}
应该有效:
interface ExampleController{}
@Path(/some)
class ExampleControllerImpl implements ExampleController{}