跨 Maven 项目自动装配 FeignClient

Autowire FeignClient across maven Project

我有使用 Spring-boot、Maven 和 Kotlin 构建的项目。 我想在一个maven项目中暴露一些Services和FeignClients,以便其他人可以使用它们。

对于带有 @Service 之类的注释的 class,效果很好。但我还需要公开 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。所以不是 可见或可用。 "Consider defining a bean of type 'com.mycomp.MyAPIClient' in your configuration."

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

感谢您的帮助

如果两个项目中的包结构相同,它会自动运行。 See默认情况下如何搜索假冒客户。

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