spring - 自动装配接口与类
问题描述
如果一个接口有多个实现,那么我将不得不使用@Qualifier 来指示我想要自动装配哪个类。直接自动装配类而不是接口不是更有意义吗?
解决方案
这就是面向对象编程(尤其是抽象和多态)的意义所在。
您构建独立于具体实现的类并使用接口。
这使您可以随时更改使用的实现。
假设你有这个:
public interface I{
void doSomething();
}
@Component("a")
public class A implements I{
public void doSomething(){
//...
}
public void doSomethingElse(){
//...
}
}
@Component("b")
public class B implements I{
public void doSomething(){
//...
}
}
如果你使用
@Autowired
private A yourVariable;
您可能很想使用doSomethingElse()
作为实现细节的方法(无论出于何种原因)。
但是,如果您使用
@Qualifier("a")
private I yourVariable;
这不可能发生,因为接口中不存在该方法。
这使您能够随时交换实现。
推荐阅读
- c++ - Visual C++ - 文件夹结构
- r - 两个矩阵列表的 T 检验
- sql-server - 我想在数据到达服务器时动态更改小部件颜色,但我不明白
- spring-data-jpa - 有没有一种方法可以在不使用框架的情况下在 Spring JPA 上实现数据库迁移(例如:flyway、liquidbase 等)?
- python - 如何从 Firebase 值创建一个数组
- javascript - setTimeout 是否被添加到调用堆栈中?
- python - 如何打印没有类名的类的结果?
- python - 将每个单独的文本文件的内容存储到列表中
- javascript - Flatlist项目重复问题
- java - 为什么顶部栏中的搜索在 android studio 中不起作用?