首先有这样一个类,用@Service声明为一个bean
@Service("testFacadeImpl ")
public class TestFacadeImpl implements TestFacade {
}
再config类里面这样写的
@Autowired
@Qualified("testFacadeImpl")
TestFacade testFacade;
@Bean(name = "testFacade")
public TestFacade testFacade() {
return testFacade;
}
再使用bean的时候
@Autowired
TestFacade testFacade;
为什么可以这样注入呢?
Autowired默认是byType注入,并且上面是把Autowired作用在接口上面,但是多个实现类的时候(@Bean(name = "testFacade") 相当于创建了一个name名为testFacade的bean,name为testFacade和name为testFacadeImpl 指向同一个实例),byType的方式不再是唯一,而需要通过byName的方式来注入,此时spring要根据TestFacade testFacade去寻找name名为testFacade的bean进行注入。