私は現在、Spring と Feign の両方を把握しようとしています。要点をまっすぐに: 私はこのプロジェクトで @FeignClient を変更するのに苦労しています: Walery に よる Feign Hello World の代わりに
ウィキデータクライアント
@FeignClient(url = "https://www.wikidata.org/w")
// https://www.wikidata.org/w/api.php?action=wbsearchentities&search=apple&language=en&format=json
public interface WikidataClient {
@RequestMapping(value = "/api.php?action=wbsearchentities&language=en&format=json", method = GET)
WebsearchEntities searchForEntities(@RequestParam("search") final String search);
}
ここにあるものと同様の @Autowired 表記を使用します: Section called : Creation Feign Clients Manually
これの目的は、後でカスタム デコーダーとエンコーダーを挿入することです。私はしばらくそれを試してきましたが、私が達成できたのはすべてを台無しにすることだけでした。
あちこちからいくつかの手がかりを集め、構成クラスを作成するところまでたどり着きました。
FeignConfig
@Import(FeignClientsConfiguration.class)
public class FeignConfig {
public WikidataClient fooclient;
@Autowired
public FeignConfig(Encoder encoder, Decoder decoder){
this.fooclient = Feign.builder()
.encoder(encoder)
.decoder(decoder)
.target(WikidataClient.class,"https://www.wikidata.org/w");
}
}
修正済み
ウィキデータクライアント
わずかにインターフェース
//@FeignClient(url = "https://www.wikidata.org/w")
// https://www.wikidata.org/w/api.php?action=wbsearchentities&search=apple&language=en&format=json
public interface WikidataClient {
@RequestMapping(value = "/api.php?action=wbsearchentities&language=en&format=json", method = GET)
WebsearchEntities searchForEntities(@RequestParam("search") final String search);
}
代わりに前述のクラスを使用しようとしました
ウィキデータランナー
@Component
public class WikidataRunner implements CommandLineRunner {
private final WikidataClient omdbClient;
@Autowired
public WikidataRunner(WikidataClient omdbClient){
this.omdbClient = omdbClient;
this.feignConfig = new FeignConfig(new Encoder.Default(), new Decoder.Default());
}
FeignConfig feignConfig;
@Override
public void run(final String... args) throws Exception {
final WebsearchEntities apple = feignConfig.fooclient.searchForEntities("apple");
System.out.println(apple);
}
}
私が得たのは、さまざまな種類の Bean エラーだけでした
2017-07-19 08:02:29.056 ERROR 2018 --- スレッド「メイン」での例外 org.springframework.beans.factory.UnsatisfiedDependencyException: ファイル [/home/mibi/IdeaProjects/ FUFEign/feign-helloworld/target/classes/codes/walery/research/feign/wikidata/WikidataRunner.class]: タイプ [codes.walery.research.feign.wikidata.WikidataClient] のインデックス 0 を持つコンストラクター引数によって表現された満たされていない依存関係: : タイプ [codes.walery.research.feign.wikidata.WikidataClient] の適格な Bean が依存関係で見つかりませんでした: この依存関係のオートワイヤー候補として適格な Bean が少なくとも 1 つ必要です。依存関係の注釈: {}; ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualing bean of type [codes.walery.research.feign. wikidata.WikidataClient] 依存関係が見つかりました: この依存関係のオートワイヤー候補として適格な少なくとも 1 つの Bean が必要です。依存関係の注釈: {} [
この依存関係のオートワイヤー候補として適格な少なくとも 1 つの Bean が必要です。依存関係の注釈: {} at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org. springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1326) ~[spring-beans-4.2.1.RELEASE.jar:4.2.1.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory $1.getObject(AbstractBeanFactory.java:305) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org. コード.walery.research.feign.FeignHelloworldApplication.main(FeignHelloworldApplication.java:12) で springframework.boot.SpringApplication.run(SpringApplication.java:969)ファイル [/home/mibi/IdeaProjects/FUFEign/feign-helloworld/target/classes/codes/walery/research/feign/wikidata/WikidataRunner.class] で定義された名前 'wikidataRunner': インデックス 0 のコンストラクター引数で表現された満たされていない依存関係タイプ [codes.walery.research.feign.wikidata.WikidataClient]: : タイプ [codes.walery.research.feign.wikidata.WikidataClient] の適格な Bean が依存関係で見つかりませんでした: このための autowire 候補として適格な少なくとも 1 つの Bean が期待されます依存。依存関係の注釈: {}; ネストされた例外は org. springframework.beans.factory.NoSuchBeanDefinitionException: タイプ [codes.walery.research.feign.wikidata.WikidataClient] の適格な Bean が依存関係で見つかりません: 少なくとも 1 つの原因が予想されます: org.springframework.beans.factory.NoSuchBeanDefinitionException: 適格な Bean がありませんタイプ [codes.walery.research.feign.wikidata.WikidataClient] の依存関係が見つかりました: この依存関係のオートワイヤー候補として適格な少なくとも 1 つの Bean が必要です。依存関係のアノテーション: {} org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1326) で、この依存関係のオートワイヤー候補としての資格があります。依存性アノテーション: org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory. FeignHelloworldApplication.main(FeignHelloworldApplication.java:12) [classes/:na] 2017-07-19 08:02:29.059 INFO 2018 --- [スレッド 1] scaAnnotationConfigApplicationContext : org.springframework.context.annotation.AnnotationConfigApplicationContext@3d8314f0 を閉じる: 起動日 [Wed Jul 19 08:02:24 CEST 2017]; コンテキスト階層のルートプロセスは終了コード 1 で終了しました
Spring と Feign の初心者であることを否定しません。事は、私はこれらの両方を必死に理解する必要があるということです. これまでのところ、Feign について調査するのに 10 時間以上費やしましたが、役に立ちませんでした。
助けと指導をお願いします
ブラケットがありません