2

我有使用 Spring-boot、Maven 和 Kotlin 构建的项目。我想在 Maven 项目中公开一些服务和 FeignClients,以便其他人可以使用它们。

对于具有 @Service 之类的注释的类,效果很好。但是我还需要公开 FeignClients,它们用 @FeignClient 注释,但看起来其他项目无法注入这些客户端。我必须在我的 pom.xml 中配置一些东西吗?我正在使用 spring-cloud-starter-openfeign

这是一些代码。我的 FeignClient 看起来像:

...
@FeignClient(name = "MyAPIClient", url = "\${url}", configuration = [MyApiClientConfiguration::class])
interface MyAPIClient {
...

我尝试将该客户端注入到另一个项目中,如下所示:

...
@Service
class MyService(val myAPIClient: MyAPIClient) {
...

错误很清楚。它说,没有名为 MyAPIClient 的 bean。所以它不可见或不可用。“考虑在你的配置中定义一个 'com.mycomp.MyAPIClient' 类型的 bean。”

我是否必须明确配置某些内容才能将 OpenFeignClient 公开给我的 pom.xml 中的其他项目?

谢谢你的帮助

4

1 回答 1

2

如果您在两个项目中具有相同的包结构,它将自动工作。查看默认情况下如何执行对 feign 客户端的搜索。

在其他情况下,您需要指定注释basePackagesbasePackageClasses 属性@EnableFeignClients在需要注入 feign 客户端的应用程序中)。请注意,如果您这样做,则默认行为(扫描放置此注释的当前包)将停止工作,因此在这种情况下您也需要手动指定它。

于 2020-04-15T09:28:36.373 回答