接口:
public interface UserService {
void add();
}
实现类:
@Component
public class UserServiceFestival implements UserService {
@Override
public void add() {
System.out.println("注册用户发送优惠券...");
}
}
@Component
public class UserServiceNormal implements UserService {
public void add() {
System.out.println("添加用户...");
}
}
解决方法: UserService -> UserServiceNormal
@Autowired
private UserServiceNormal userService;
或者:Primary确定哪个实现类为首选
@Component
@Primary
public class UserServiceFestival implements UserService {
@Override
public void add() {
System.out.println("注册用户发送优惠券...");
}
}
或者:限定符
@Component
@Qualifier("festival")
public class UserServiceFestival implements UserService {
@Override
public void add() {
System.out.println("注册用户发送优惠券...");
}
}
@Component
@Qualifier("normal")
public class UserServiceNormal implements UserService {
public void add() {
System.out.println("添加用户...");
}
}
或者:推荐使用首选方案
@Component("festival")
public class UserServiceFestival implements UserService {
@Override
public void add() {
System.out.println("注册用户发送优惠券...");
}
}
@Component("normal")
public class UserServiceNormal implements UserService {
public void add() {
System.out.println("添加用户...");
}
}
测试类需要这么写:
@Autowired
@Qualifier("normal") // 对应的
private UserService userService;
或者
@Resource(name=“normal”) = @Autowired + @Qualifier(“normal”)
@Resource(name="normal")
private UserService userService;
另外:Component 注解 默认id 是 首字母小写的类名。(userServiceNormal 或者 userServiceFestival )