假如一个接口写有两个实现类,那么如果用@Autowired引用的话会报错。
可以用
@Autowired+@Qualifire(“userServiceImpl01”) ==@Resource(name=“userServiceImpl01”)
@Primary作用于实现类上。当一个接口有多个实现类时 并且用@Autowired类型匹配 @Primary作用于那一个实现类上就表示默认调用那个实现类
@Component
public interface UserServiceX {
public void add();
}
@Component
@Primary
public class UserServiceImpl01 implements UserServiceX {
@Override
public void add() {
System.out.println("UserServiceImpl01");
}
}
@Component
public class UserServiceImpl02 implements UserServiceX {
@Override
public void add() {
System.out.println("UserServiceImpl02");
}
}
@Controller
public class UserController {
@Autowired
// @Resource(name = "userServiceImpl02")
// @Qualifier("userServiceImpl02")
private UserServiceX userServiceX;
public void add(){
userServiceX.add();
}
}
打印的结果是 UserServiceImpl01