[英]OpenAPI generator add/generate annotation to ApiClient constructor
我使用最新的 OpenAPI 生成器 6.2.1 ( https://github.com/OpenAPITools/openapi-generator ) 通过 resttemplate 库生成一个 ApiClient,效果很好。
在我的应用程序中,我现在有两个不同的 RestTemplate bean。 所以Spring不知道在ApiClient构造函数中使用哪一个。
com.xyz.ApiClient 中构造函数的参数 0 需要单个 bean,但找到了 2 个
还有解决问题的提示:
考虑将其中一个 bean 标记为 @Primary,更新消费者以接受多个 bean,或者使用 @Qualifier 来标识应该被消费的 bean
我不想用 @Primary 标记其中一个 bean,因为它不是要使用的主 bean。
我想将 @Qualifier 添加到生成的 ApiClient 构造函数中,如下所示:
@Autowired
public ApiClient(@Qualifier("myClientProperties") RestTemplate restTemplate) {
this.restTemplate = restTemplate;
init();
}
如何将 @Qualifier 注释添加到生成的构造函数?
我阅读了很多 openapi 生成器文档,但没有找到任何有用的信息。 有一个为模型添加注释的解决方案(OpenApi 配置的 configOptions 中的 additionalModelTypeAnnotations)。
我希望为 ApiClient 构造函数生成一个 @Qualifier 注释。
您可以为生成的类禁用组件扫描。 假设,您的根 package 是“my.root.package”,并且您将类生成到“my.root.package.generated”中,使用以下注释您的 App / Config class:
@ComponentScan(basePackages = "my.root.package",
excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX,
pattern = "my.root.package.generated.*"))
然后,您可以根据您的 rest 模板创建自己的(合格的)ApiClients:
@Bean("rest-template-1")
public RestTemplate restTemplate1() {
return new RestTemplate();
}
@Bean("rest-template-2")
public RestTemplate restTemplate2() {
return new RestTemplate();
}
@Bean("api-client-1")
public ApiClient apiClient1(@Qualifier("rest-template-1") RestTemplate restTemplate) {
return new ApiClient(restTemplate);
}
@Bean("api-client-2")
public ApiClient apiClient2(@Qualifier("rest-template-2") RestTemplate restTemplate) {
return new ApiClient(restTemplate);
}
使用这些不同的合格 ApiClient,您可以根据需要初始化 API 类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.