我正在努力迁移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 停止工作了。
我已经浏览了很多教程/博客,但找不到解决方案。提前谢谢大家。
就我而言,这是由于 org.reflections 库的冲突。从 0.10 切换回 0.9.12 解决了该问题。
迁移建议: 实际上问题出在迁移技术上。我们不应该直接跳转到最新版本。我们应该通过考虑发行说明来继续逐个版本。如果你想从 spring 2.0.0 切换到 2.7.0,不要直接跳进去。只需首先移动 2.1.0..2.2.0.. 等。在迁移的每一步中清理并构建项目。
谢谢!!!
我解决了同样的问题。
哪个类包含“public static void main(String[] args) { SpringApplication.run(...”有一个注解@ComponentScan。 如果您选择了一些带有basePackageClasses标记的类,您需要添加basePackages =“yourpackagepath”。小心点,也许你和我一样犯了错误。
对于我来说,这是一个非常有趣的解决方案。原来我的restcontroller缺少@RequestMapping注释
@RestController
public class MyRestController {
}
通过添加@RequestMapping注释修复它
@RestController
@RequestMapping("/api/v1")
public class MyRestController {
}
我遇到了类似的问题,原因是我如何运行我的应用程序,看看这个:https://stackoverflow.com/a/78271661/5297663