Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService1': No qualifying bean of type 'com.bjpowernode.dubbo.service.UserService' available: expected single matching bean but found 2: UserService1,UserService2
报错如下:
后端代码:
UserController
@Controller
public class UserController {
@Autowired
private UserService userService1;
@Autowired
private UserService userService2;
@RequestMapping("/user")
public String userDetail(Model model, Integer id){
User user = userService1.queryUserById(id);
User user2 = userService2.queryUserById(id);
model.addAttribute("user", user);
model.addAttribute("user2", user);
return "userDetail";
}
}
spring配置文件
<dubbo:reference id="UserService1" interface="com.bjpowernode.dubbo.service.UserService" version="1.0.0"/>
<dubbo:reference id="UserService2" interface="com.bjpowernode.dubbo.service.UserService" version="2.0.0"/>
在Controller中我使用了@Autowired注解,而@Autowired注解是通过类型对beabn进行注入的,如果有多个相同类型的bean需要注入,则会自动根据需要注入的bean的名称与对应的bena id自动匹配注入。而我在配置文件中配置的bean id和需要注入的bean名称不一样。改一下bean id与需要注入的bean的名称一致,就可以使用@Autowired在多个同类型bean实现注入
注意大小写
<dubbo:reference id="userService1" interface="com.bjpowernode.dubbo.service.UserService" version="1.0.0"/>
<dubbo:reference id="userService2" interface="com.bjpowernode.dubbo.service.UserService" version="2.0.0"/>