Spring注解 @Qualifier 的用法
在 Controller 中需要注入 service。但是如果这个 service 有两个或多个实现类时,应该如何区分这两个 impl 呢?
例:
下面是 userService 的两个实现类:userService1 和 userService2。
@Service("userService1")
public class userService1 implements userService {
@Override
public boolean login() {
return false;
}
}
@Service("userService2")
public class userService2 implements userService {
@Override
public boolean login() {
return false;
}
}
在 Controller 中自动注入时,可以添加 @Qualifier 注解来区分它们:
@Controller
public class userController {
@Autowired
@Qualifier("userService1")
userService userService;
}
通过 Qualifier(意思是“合格者”)这个标示,表明了那个实现类才是我们所需要的。
添加该注解,要注意注解的参数名称必须为之前定义的 @Service 注解的名称之一。
注:使用 @Resource 注解时,不再需要使用 @Qualifier 注解,使用其自带的 “name” 就行:
@Controller
public class userController {
@Resource(name = "userService1")
userService userService;
}
评论区