我正在研究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)。将引发异常。