2

Spring-boot、Maven、および Kotlin でビルドされたプロジェクトがあります。Maven プロジェクトでいくつかのサービスと FeignClient を公開して、他のユーザーがそれらを使用できるようにしたいと考えています。

うまく機能する @Service のようなアノテーションを持つクラスの場合。しかし、@FeignClient で注釈が付けられた 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 を定義することを検討してください。」

pom.xml で OpenFeignClient を他のプロジェクトに公開するには、何かを明示的に構成する必要がありますか?

ご協力いただきありがとうございます

4

1 に答える 1

2

両方のプロジェクトで同じパッケージ構造があれば、自動的に機能します。偽のクライアントの検索がデフォルトでどのように実行されるかを確認してください。

それ以外の場合は、アノテーションbasePackagesbasePackageClasses 属性を指定する必要が@EnableFeignClientsあります (偽のクライアントを挿入する必要があるアプリ内)。これを行うと、デフォルトの動作 (このアノテーションが配置されている現在のパッケージをスキャンする) が機能しなくなるため、この場合も手動で指定する必要があることに注意してください。

于 2020-04-15T09:28:36.373 に答える