https://blog.csdn.net/bird_tp/article/details/106338111

image.png

一、问题描述

在spring的注解使用中,@Autowired注解的作用是注入bean,但是假如有一个接口,它包含两个实现类,这个时候应该怎么实现注入呢?

二、单个实现类使用情况

controller:

@RestController
@RequestMapping(value = "/user")
public class UserController {
 
    @Autowired
    private IUserService iUserService ;
 
 
    @RequestMapping(value = "/getUsers23")
    public List<User> getUsers2() {
        List<User> users = iUserService .list();
        return users;
    }
    
}

service:

public interface IUserService extends IService<User> {
    
}

serviceImpl:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

}

正常的代码,这样是正常的注入的

三、多个实现类情况

假如我现在还有一个实现类实现 IUserService,代码如下

@Service
public class UserServiceImpl1 extends ServiceImpl<UserMapper, User> implements IUserService {
    
}

这个时候,我们 controler 使用注解的方式不变,启动看看

image.png

可以看到,这个时候启动报错了。那么应该如何解决呢