我已经阅读 Spring in Action 一书几周了,以了解 Spring 框架。我有大约 2 年的编程经验,主要是在 java 中,在 Ruby 和 Python 中也有一些干扰。
在阅读了前几章之后,我并没有完全明白 Spring 中的依赖注入(inject)有什么大不了的。我期待一个 AHAAA 时刻,但还没有完全体验到。我确定我错过了一些重要的东西。
为什么我想在 xml 中连接我的 bean,而不是使用 = new myclass();
我知道我可以通过构造函数参数和属性在 xml 中连接 bean,也可以在 spring 中配置数据源,以便我可以在 xml 文件中隐藏连接详细信息。但为什么?这还有更多,尤其是在良好的软件设计方面。有人能解释一下大事吗?
最佳答案
三个字:控制反转
简而言之: 一旦你实例化“好的旧方法”,你就会创建紧密耦合,例如:你的 Controller 依赖于一个特定的模板引擎,你的实体在一个具体的数据库层上,等等。这就是你想要防止的事情以及依赖注入(inject)容器的位置(DIC) 非常方便。它管理您的服务,您不必再关心具体的实现,只要它们实现相同的接口(interface)即可。
想象一个名为 InMemoryLayer
的简单存储层类,您可以在需要时对其进行实例化。现在你想把它换成一个很棒的新的开源 github 解决方案,叫做 SuperSecretRemoteCloudLayer
。通常,您现在会在您选择的 IDE 中点击“搜索和替换”,并将所有出现的 InMemoryLayer
替换为 SuperSecretRemoteCloudLayer
。但这不是很方便而且很容易出错,你为什么要手动完成所有这些艰苦的工作呢? DIC 可以为您和所有您 做这件事,这两个 *Layer
都实现了相同的接口(interface)(因此您的应用程序不会中断)。
关于java - Spring中使用的依赖注入(inject)有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19368378/