问题描述:一个接口,有俩个实现类当注入时候名字不同时,会出现不同的情况
action层:
@Controller("userAction")
@Scope("prototype")
public class UserAction extends ActionSupport implements ModelDriven<User>{
private User user;
private IUserService userService; public IUserService getUserService() {
return userService;
} @Resource
public void setUserService(IUserService userService) {
this.userService = userService;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
//model
public User getModel() {
if(user == null) {
user = new User();
}
return user;
}
//列表
public String list(){
List<User> us = userService.listAllUser();
ActionContext.getContext().put("us", us);
return SUCCESS;
} }
接口层
public interface IUserService {
public List<User> listAllUser();
}
实现类
(一)
@Service("userService")
public class UserService1 implements IUserService {
public List<User> listAllUser() {
System.out.println("user1-------------------------");
return null;
}
}
(二)
@Service("aaa")
public class UserService2 implements IUserService {
public List<User> listAllUser() {
System.out.println("user2-------------------------");
return null;
}
}
(三)
@Service("bbb")
public class UserService3 implements IUserService {
public List<User> listAllUser() {
System.out.println("user3-------------------------");
return null;
}
}
(四)
@Service("bbb")
public class UserService4 implements IUserService {
public List<User> listAllUser() {
System.out.println("user4-------------------------");
return null;
}
}
情况一:当实现类为(一)和其他实现类的时候,只实现(一)
注意:此时 @Service("userService")和action中private IUserService userService名字一样
情况二:当实现类为(二)和(三)的时候,报错
No unique bean of type [com.fly.service.IUserService] is defined: expected single matching bean but found 2: [aaa, bbb]
情况三:当实现类为(四)和(三)的时候,启动服务就报错
情况四:当实现类只有一个的时候,正常执行