SpringBoot集成openapi-generator-maven-plugin报错:No operations defined in spec
解决Swagger显示"No operations defined in spec!"的问题
针对你的情况,以下是几个关键排查和修复步骤:
1. 确保Spring扫描到生成的API包
你的API生成在com.openapi.springboot.api包下,但Spring Boot主启动类默认只扫描自身所在包及其子包(你的主类大概率在xxx.yyyyyyy包下)。需要在主启动类上添加扫描配置:
@SpringBootApplication @ComponentScan(basePackages = {"com.openapi.springboot.api", "xxx.yyyyyyy"}) public class TestOpenapiCodegeneratorApplication { public static void main(String[] args) { SpringApplication.run(TestOpenapiCodegeneratorApplication.class, args); } }
2. 完成Delegate模式的实现类注册
你开启了delegatePattern=true,生成器会生成API接口(比如UserApi)和对应的UserApiDelegate抽象接口,你需要实现这个Delegate并注册为Spring Bean:
- 在
com.openapi.springboot.api包下创建实现类:
@Component public class UserApiDelegateImpl implements UserApiDelegate { @Override public ResponseEntity<UserDTO> saveUser(UserDTO userDTO) { // 实现业务逻辑 return ResponseEntity.ok(userDTO); } @Override public ResponseEntity<UserDTO> getUserById(String id) { // 实现业务逻辑 UserDTO user = new UserDTO(); user.setId(id); user.setEmail("test@example.com"); return ResponseEntity.ok(user); } }
- 这个实现类必须加上
@Component注解,让Spring能扫描到并注入到API接口中。
3. 配置SpringDoc扫描指定API包
在application.yml中添加SpringDoc的扫描配置,确保它能识别生成的API注解:
springdoc: packages-to-scan: com.openapi.springboot.api
4. 验证生成代码的注解兼容性
检查target/generated-sources/openapi/src/main/java/com/openapi/springboot/api下的API类(比如UserApi.java),如果生成的代码用的是旧版Swagger注解,可在生成器配置中添加useSpringdoc: true参数,让生成器直接生成SpringDoc兼容的注解:
修改POM中openapi-generator的configOptions:
<configOptions> <delegatePattern>true</delegatePattern> <serializableModel>true</serializableModel> <useJakartaEe>true</useJakartaEe> <useSpringdoc>true</useSpringdoc> </configOptions>
执行mvn clean generate-sources重新生成代码。
完成以上步骤后,重启应用,访问默认Swagger UI地址http://localhost:8080/swagger-ui.html即可看到定义的API。
内容的提问来源于stack exchange,提问作者development anil
相关产品推荐
相关产品推荐

