规范中没有定义任何操作! swagger UI 出现错误

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

我正在努力迁移Spring Boot的版本。我正在使用带有球衣的弹簧靴。升级 Spring Boot 和其他依赖项的版本后,swagger 对我不起作用。我没有修改任何配置。

pom 中的依赖关系:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.10</version>
    </parent>

<dependencyManagement>
        <dependencies>
            <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> 
                <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> -->
            <!-- Jersey -->
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>

<dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-jersey2-jaxrs</artifactId>
            <version>1.6.6</version>
        </dependency>

Swagger 配置:

private void configureSwagger() {
        register(SwaggerSerializers.class);
        register(ApiListingResource.class);

        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setTitle("API documentation");
        beanConfig.setVersion(api.name());
        beanConfig.setSchemes(new String[] {
                "https", "http"
        });
        beanConfig.setBasePath("/api" + api.getPath());

        // ConfigId and ScannerId must also be set as init parameters
        // during servlet configuration
        beanConfig.setConfigId(api.name());
        beanConfig.setScannerId(api.name());
        beanConfig.setUsePathBasedConfig(true);

        beanConfig.setResourcePackage("com.api.v1.priv.resources");
        beanConfig.setPrettyPrint(true);
        beanConfig.setScan(true);
    }

迁移变化: Spring boot 版本从 2.0.5.RELEASE => 2.6.10 升级 swagger-jersey2-jaxrs 从 1.5.18 => 1.6.6

升级

注意 - Swagger 配置已存在。没有进行任何更改。

迁移后我能够成功运行该项目。所有 api 端点都工作正常。但不幸的是 swagger 停止工作了。

招摇错误:

我已经浏览了很多教程/博客,但找不到解决方案。提前谢谢大家。

spring-boot swagger jersey-2.0
4个回答
0
投票

就我而言,这是由于 org.reflections 库的冲突。从 0.10 切换回 0.9.12 解决了该问题。

迁移建议: 实际上问题出在迁移技术上。我们不应该直接跳转到最新版本。我们应该通过考虑发行说明来继续逐个版本。如果你想从 spring 2.0.0 切换到 2.7.0,不要直接跳进去。只需首先移动 2.1.0..2.2.0.. 等。在迁移的每一步中清理并构建项目。

谢谢!!!


0
投票

我解决了同样的问题。

哪个类包含“public static void main(String[] args) { SpringApplication.run(...”有一个注解@ComponentScan。 如果您选择了一些带有basePackageClasses标记的类,您需要添加basePackages =“yourpackagepath”。小心点,也许你和我一样犯了错误。


0
投票

对于我来说,这是一个非常有趣的解决方案。原来我的restcontroller缺少@RequestMapping注释

@RestController
public class MyRestController {

}

通过添加@RequestMapping注释修复它

@RestController
@RequestMapping("/api/v1")
public class MyRestController {

}

0
投票

我遇到了类似的问题,原因是我如何运行我的应用程序,看看这个:https://stackoverflow.com/a/78271661/5297663

© www.soinside.com 2019 - 2024. All rights reserved.