我正在研究Spring框架,并且在此示例的构造函数中,我对与@Autowired批注有关的以下疑问:

@Component
public class TransferServiceImpl implements TransferService {

    @Autowired
    public TransferServiceImpl(AccountRepository repo) {
        this.accountRepository = repo;
    }
}


那到底是什么意思呢?是否将AccountRepository回购对象(在某处定义为组件)自动注入TransferServiceImpl()构造函数中?

此操作如何运作?它是按类型完成的吗? (因为AccountRepository是Spring默认的单例),还是什么?

特纳克斯

最佳答案

Spring将在容器中查找AccountRepository bean。有多种可能的方案:

1-有零个类型为AccountRepository的bean。将引发异常。

2-有一个类型为AccountRepository的bean。构造TransferServiceImpl时将注入Bean。

3-有多个类型为AccountRepository的bean:


回退到Bean名称。在这种情况下,Spring将查找名称为AccountRepository的类型为repo的bean。如果找到匹配项,它将被注入。
名称回退失败(多个具有相同类型和名称的bean)。将引发异常。

09-28 11:39