闽公网安备 35020302035485号
问题: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();
}
}