SpringBoot中接口有多个实现时,通过注解去选择合适的实现Bean
根据问题现状,创建好对应的代码格式,如下图:
service包下的接口StudentService和它的两个实现类BoyStudentImpl和GirlStudentImpl分别如下图所示:
在controller下要引用这个service,一般是如下图方式去引用:
@Autowired StudentService service;
但是因为目前一个接口不止一个实现类,所以之前的引用方式在这种情况下不适合,下面展示在这种情况下一个controller中引用多个bean:
第一种,service对象名要和beanName相同:
如果不相同的话会有如下的提示:
第二种,@Autowired + @Qualifier配合使用,如下图:
同时发现这种方式会覆盖第一种方式,service选的bean以Qualifier中的value为准。
第三种,使用@Resource注解,如下图
与第二种方式相比,效果一样。
目前根据使用情况,整理了3种方式,希望对大家有帮助