Spring注入接口,接口多个实现类调用哪个实现类的三种方案
代码所示:
··· @Autowired UserService userService
···
在这个接口有多个实现类的情况下三种方式定义调用实现类:
方法1:
··· `@Autowired
UserService userServiceImpl_1` ···
在变量名中直接写成想要调用的那个实现类名称,名称规定为首字母小写
方法2
@Primary 注解,标注在实现类上,注解意思:优先使用本类。
方法3
结合使用:
只需要在注⼊的时候,额外通过另外⼀个注解@Qualifier来标识需要注⼊实现类的名字
@Autowired
@Qualifier("userServiceImpl_1")
UserService userService;
同理:@Resource跟方法三是一样的原理
方法一是根据类的BeanName在容器中跟beanId对比寻找,
方法二是直接表示用哪个。
方法三是直接根据beanId找全限定路径找类。
在这里推荐使用@Resource,方便快捷。