从 org.apache.cxf.jaxrs.swagger 迁移 -> org.apache.cxf.jaxrs.openapi

问题描述 投票:0回答:1

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;
    }
java swagger cxf openapi
1个回答
0
投票

解决方案:只需将interface中的@Path注解替换为impl即可。 如果 @Path 注释不在类上,则使用 openapi 的 Jaxrs 看不到控制器。

示例:

不起作用:

    @Path(/some)
    interface ExampleController{}
    class ExampleControllerImpl implements ExampleController{}

应该有效:

    interface ExampleController{}
    @Path(/some)
    class ExampleControllerImpl implements ExampleController{}
© www.soinside.com 2019 - 2024. All rights reserved.