SpringBoot使用@Autowired为多实现的接口注入依赖
在Spring Boot中,使用@Autowired注解将依赖注入到类中是非常常见的操作。当接口有多个实现类时,我们可以使用@Autowired注解根据条件选择合适的实现类进行注入。
下面是使用@Autowired为多实现的接口注入依赖的完整攻略:
步骤一:定义接口和多个实现类
首先,我们需要定义一个接口,并在接口中定义我们需要的方法。然后,创建多个实现类来实现该接口。假设我们有一个名为 UserService
的接口和两个实现类 UserServiceImpl1
和 UserServiceImpl2
,代码如下:
public interface UserService {
void getUserInfo();
}
@Service
public class UserServiceImpl1 implements UserService {
@Override
public void getUserInfo() {
System.out.println("UserServiceImpl1 - 获取用户信息");
}
}
@Service
public class UserServiceImpl2 implements UserService {
@Override
public void getUserInfo() {
System.out.println("UserServiceImpl2 - 获取用户信息");
}
}
步骤二:创建调用注入的类
接下来,我们创建一个需要注入 UserService
的类,并使用@Autowired注解将其注入到该类中。同时,为了区分多个实现类的注入,我们可以在实现类上使用@Qualifier
注解指定具体的实现类。示例代码如下:
@Component
public class UserController {
private final UserService userService;
@Autowired
public UserController(@Qualifier("userServiceImpl1") UserService userService) {
this.userService = userService;
}
public void getUserInfo() {
userService.getUserInfo(); // 调用UserService中的方法
}
}
在上述代码中,我们使用了@Qualifier("userServiceImpl1")
注解来指定注入 UserServiceImpl1
实现类。
步骤三:测试注入结果
最后,我们可以测试一下注入的结果。我们可以在主类中创建一个测试方法,实例化 UserController
对象并调用 getUserInfo()
方法。示例代码如下:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public CommandLineRunner commandLineRunner(UserController userController) {
return args -> {
userController.getUserInfo(); // 调用UserController中的方法
};
}
}
当你运行MyApplication
类时,你将会看到控制台输出:
UserServiceImpl1 - 获取用户信息
这表明成功注入了 UserServiceImpl1
实现类。
另外,如果你想注入 UserServiceImpl2
实现类,你只需将 UserController
构造方法中的 @Qualifier
注解的值改为 "userServiceImpl2"
,即可实现切换注入的实现类。
以上就是使用@Autowired为多实现的接口注入依赖的完整攻略。通过使用@Autowired和@Qualifier注解,我们可以根据需求选择注入不同的实现类。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot使用@Autowired为多实现的接口注入依赖 - Python技术站