比如有TestService接口和其实现类TestServiceImpl,其中只注入了实现类TestServiceImpl的bean,正常使用可以实现。
Controller获取实例的过程:使用@Autowired,程序在spring的容器中查找类型时TestService的bean,刚好找到有且只有一个此类型的bean,即TestServiceImpl,所以就把testServiceImpl自动装配到了Controller的实例TestService中。
如果有多个实现类,只注入其实现类,会报错。
1,用@Autowired时结合@Qualifier使用实现类的开头小写类名TestServiceImpl2->testServiceImpl2
2,@Resource也可以使用(name="testServiceImpl2"),如果不显示的指定name值,就会自动把实例变量的名称作为name的值,
@Resource private TestService testServiceImpl2;