【发布时间】:2018-01-28 08:07:28
【问题描述】:
我有一个问题。关于“Spring autowire byType vs constructor(xml配置)”。
在多个地方读到构造函数自动注入类似于 byType。但是在我测试的时候,如果有歧义,构造函数 autowire 的行为类似于 byName(甚至不完全),如果我遗漏了任何重要的点,需要您的输入。
我有以下配置:
<bean name="customerRepository" class="repository.HibernameCustomerRepositoryImpl"/>
<bean name="customerRepository1" class="repository.EclipselinkCustomerRepositoryImpl"/>
<bean name="customerService" class="service.CustomerServiceImpl" autowire="..."/>
按类型输出: org.springframework.beans.factory.NoUniqueBeanDefinitionException [良好预期输出]
构造函数输出: pankaj [注意我没有收到 NoUniqueBeanDefinitionException,它为我提供了 customerRepository 的输出,为什么?下面是示例代码] [似乎在有歧义的情况下,它会检查属性名称并选择名称与属性名称匹配的 bean]
示例代码:
public class CustomerServiceImpl implements CustomerService {
private CustomerRepository customerRepository;
public CustomerServiceImpl() {
}
public CustomerServiceImpl(CustomerRepository customerRepository) {
this.customerRepository = customerRepository;
}
// public void setCustomerRepository(CustomerRepository customerRepository) {
// this.customerRepository = customerRepository;
// }
@Override
public List<customer> findAll() {
return customerRepository.findAll();
}
}
【问题讨论】:
标签: spring