问题:Spring 中的 Service 有多个实现类,怎么注入?
答案:
方法一:Controller中注入service的时候使用@Autowired自动注入,@Qualifier("beanId")来指定注入哪一个。
方法二:Controller中注入service的时候使用@Resource(type = 类名.class)来指定注入哪一个。Controller中注入service的时候使用名称来指定注入哪一个(使用@Resource(name="名称"))。
@Resource的作用相当于@Autowired。
public interface HumanService { public String name(); }接口实现类
@Servicepublic class TeacherServiceImpl implements HumanService { @Override public String name() { System.out.println("teacher"); return "teacher"; } } @Servicepublic class DoctorServiceImpl implements HumanService { @Override public String name() { System.out.println("doctor"); return "doctor"; } }控制器
@RestController public class HumanController { // @Resource(type = DoctorServiceImpl.class) //方法二 @Autowired @Qualifier("teacherServiceImpl") private HumanService humanService; @RequestMapping("/name") public String name(){ return humanService.name(); } }方法三代码如下:
public interface HumanService { public String name(); }接口实现类
@Service("teacherService") public class TeacherServiceImpl implements HumanService { @Override public String name() { System.out.println("teacher"); return "teacher"; } } @Service("doctorService") public class DoctorServiceImpl implements HumanService { @Override public String name() { System.out.println("doctor"); return "doctor"; } }控制器
@RestController public class HumanController { // 堆代码 duidaima.com @Resource(name="doctorService") private HumanService humanService; @RequestMapping("/name") public String name(){ return humanService.name(); } }