我正在使用openapi-generator-maven-plugin生成代码。代码正在成功生成。但是spring boot并没有在上下文中加载生成的代码。我不知道为什么,因为我做了以下事情。
下面是我的插件配置:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/spec/SchoolAPIs.v1.yaml</inputSpec>
<output>${project.build.directory}/server</output>
<language>spring</language>
<apiPackage>com.school.rest.controllers</apiPackage>
<modelPackage>com.school.rest.generated.dtos</modelPackage>
<supportingFilesToGenerate>ApiUtil.java</supportingFilesToGenerate>
<library>spring-boot</library>
<configOptions>
<java8>false</java8>
<dateLibrary>java8</dateLibrary>
<delegatePattern>true</delegatePattern>
<useBeanValidation>true</useBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>下面是我指定配置的主类:
@EnableSwagger2
@EnableAsync
@SpringBootApplication(exclude = SecurityAutoConfiguration.class, scanBasePackages = { "com.school.rest"})
@EnableJpaRepositories(basePackages = "com.school.rest.repository")
@Slf4j
public class SchoolAPIApplication implements CommandLineRunner {
public static void main(String[] args) {
ApplicationContext context = new SpringApplicationBuilder(SchoolAPIApplication.class)
.registerShutdownHook(true).run(args);
PlansApiController plansApiController = context.getBean(PlansApiController.class);
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>> {}", plansApiController);
}
}我不知道这里出了什么问题,我已经为这个问题挣扎了近2天。找不到丢失的是什么。
如果您有任何可用的解决方案,请告诉我。
更新:此调用产生以下error>
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>> {}", plansApiController);错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type...问候
发布于 2020-05-26 21:40:32
从我所看到的,你生成的包在启动时没有被扫描。我已经尝试在这里重现你的问题和解决方案,https://github.com/tinashehondo/notifications-api
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
<output>${project.build.directory}/api</output>
<language>spring</language>
<modelPackage>uk.co.tinashehondo.notifications.rest.model</modelPackage>
<apiPackage>uk.co.tinashehondo.notifications.rest.api</apiPackage>
<generateSupportingFiles>true</generateSupportingFiles>
<configOptions>
<java8>false</java8>
<dateLibrary>java8</dateLibrary>
<delegatePattern>true</delegatePattern>
<useBeanValidation>true</useBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>和
@SpringBootApplication(exclude = SecurityAutoConfiguration.class,
scanBasePackages = { "uk.co.tinashehondo.notifications.rest"})
public class App {
public static void main(String[] args) {
ApplicationContext context = new SpringApplicationBuilder(App.class)
.registerShutdownHook(true).run(args);
NotificationApi notificationApiController = context.getBean(NotificationApi.class);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>> {}"+notificationApiController); //forgive sys.out here
}}
输出
>>>>>>>>>>>>>>>>>>>>>>>>>>>> {}uk.co.tinashehondo.notifications.rest.api.NotificationApiController@7b948f3e发布于 2020-06-01 13:00:38
好吧,对我来说答案是这样的,
我之所以面临这个问题,是因为较低的spring-boot版本不支持从生成的接口读取数据。由于这个原因,代码生成器正在生成带有带有所有文档注释的接口的代码,但是它们不会被spring读取并添加到上下文中。
将我的spring版本从2.0.0升级到2.1.4,事情就解决了。张贴在这里供其他人参考。
https://stackoverflow.com/questions/62021727
复制相似问题