WordDao というインターフェイスと、WordDaoImpl という抽象クラスの impl があります。そして、一部の impl クラスはその抽象クラスを拡張します。
それらを注入するときに同じ変数名を使用します。
元:
@Component("subjectService")
public class SubjectDaoImpl extends WordDaoImpl;
@Autowired
private WordDao subjectService;
偽物を追加する前に、すべてがうまく機能します。私の偽のクライアントは、WordDao を拡張するインターフェイスです。
このような:
@FeignClient("Noun")
public interface NounClient extends WordDao;
現在、私の @Autowired クラスはすべて、偽のクライアントを注入しています。
偽のクライアントから「extends WordDao」を削除しようとしたところ、再び正常に動作しましたが、理由がわかりません。
私の質問は次のとおりです。春の@autowiredは名前でimplクラスを選択していませんか(変数とクラス/コンポーネント名を一致させようとします)?