每当我问任何人Spring Framework是什么或它做什么时,他们只是对我说,你记得好莱坞原则正确的“别叫我,我会叫你”,这正是Spring Framework所做的。 / p>
我该怎么做?
答案 0 :(得分:3)
这意味着类不会手动实例化它所依赖的组件 - 某些东西(例如Spring的IoC上下文)为类提供了所需的每个组件的实例。这通常通过每个组件的setter或者采用所有这些组件的构造函数来完成。
基本上不是自己进行手动实例化的类:
public class Foo {
private Bar bar;
public void doStuff() {
bar = new BarImplementation();
bar.doMoreStuff();
}
}
IoC将依赖Bar注入Foo,这样当你从上下文中获取Foo对象时,你就知道它已经可以使用了。
public class Foo {
private Bar bar;
public void setBar(Bar bar) { this.bar = bar; }
public void doStuff() {
// bar's already been set by the time this is called!
bar.doMoreStuff();
}
}
您没有手动实例化Bar,而是您的配置文件(例如Spring XML)为您设置了它。此外,Foo不再与BarImplementation绑定。使用接口可以插入不同的实现,包括用于测试的模拟。
答案 1 :(得分:1)
有时回调模型更有效,特别是与解析
有关如果你想象好莱坞的情况,那么一旦他们知道他们将要演员(甚至不打电话)而不必继续接听每个想要一个更新
答案 2 :(得分:0)
回调。 :P这对我来说意味着什么。回调是等待被调用的函数。
答案 3 :(得分:0)
请参阅http://en.wikipedia.org/wiki/Inversion_of_Control
Spring也做其他事情,但IoC /依赖注入似乎是最着名的功能。它可以帮助使系统更少耦合和更灵活。