在 Spring Boot 中,当一个接口有多个实现类时,使用 @Autowired 注解进行自动注入时会出现无法确定具体实现类的问题。这时可以使用 @Qualifier 注解配合 @Autowired 注解来指定具体的实现类。

@Qualifier 注解作用于形参上,用于指定注入的具体实现类的名称。

示例代码:

public interface UserService {
    void addUser();
}

@Service
public class UserServiceImpl1 implements UserService {
    @Override
    public void addUser() {
        System.out.println('添加用户1');
    }
}

@Service
public class UserServiceImpl2 implements UserService {
    @Override
    public void addUser() {
        System.out.println('添加用户2');
    }
}

@Controller
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(@Qualifier('userServiceImpl2') UserService userService) {
        this.userService = userService;
    }

    // ...
}

在上述代码中,UserController 类的构造方法上使用了 @Autowired 和 @Qualifier 注解。@Autowired 注解用来自动注入 UserService 类型的实例,而 @Qualifier 注解则用来指定具体的实现类的名称,这里指定了 'userServiceImpl2'。这样,当 UserController 类被实例化时,Spring Boot 就会自动将 UserServiceImpl2 类的实例注入到 userService 字段中。

Spring Boot @Qualifier 注解:如何指定注入的具体实现类

原文地址: https://www.cveoy.top/t/topic/qnKx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录