Mak*_*dex 2 java spring dependency-injection
有人可以向我解释为什么我们需要使用spring的依赖注入,只需导入一个java类,如:
import com.package.somejavaclass
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么?
依赖注入(和控制反转)与无关import.依赖注入允许您做出运行时决策而不是编译时决策.例如,您的类如何获取数据库Connection.这是硬编码的配置.
import该import语句允许您不指定类的完全限定名称.也就是说,没有import java.util.Date;你仍然可以(例如)
System.out.println(new java.util.Date());
Run Code Online (Sandbox Code Playgroud)
依赖注入用于消除对代码更改的需要,并且仅使用配置即可实现。
也就是说,你有
Interface B {
//some methods
}
class X implements B{
// implement some methods of B
}
class Y implements B{
// implement some methods of B
}
// code without using Dependency Injection
class A1{
private B objB = New X();
//remaining code
}
class A2{
private B objB = New X();
//remaining code
}
Run Code Online (Sandbox Code Playgroud)
注意:如果由于某种原因需要使用类Y更改objB实例,则需要在类A1和A2中都进行代码更改。
// code using Dependency Injection
class A1{
@Autowired
private B objB;
//remaining code
}
class A2{
@Autowired
private B objB;
//remaining code
}
Run Code Online (Sandbox Code Playgroud)
在这里,您只需要更改为接口B创建实例的配置,然后将所需的类从X更改为Y即可。在任何Java类(此处为A1和A2)中都没有更改。
| 归档时间: |
|
| 查看次数: |
3119 次 |
| 最近记录: |