Spring MVC Spring中使用的依赖注入的意义是什么?

ctrmrzij  于 2023-05-23  发布在  Spring
关注(0)|答案(3)|浏览(131)

我已经阅读了几个星期的Spring in Action这本书来学习Spring框架。我有大约2年的编程经验,主要是Java,在Ruby和Python中有一些干扰。
在阅读了前几章之后,我并没有完全理解Spring中依赖注入的重要性。我期待着一个AHAAA时刻,但还没有完全体验到。我肯定漏掉了什么重要的东西。
为什么我想用xml连接bean,而不是用= new myclass();示例化它们
我知道我可以通过构造函数、参数和属性在xml中连接bean,以及在spring中配置数据源,这样我就可以在xml文件中隐藏连接细节。但是为什么呢?这其中还有更多的原因,特别是当涉及到好的软件设计时。有人能解释一下这件大事吗?

acruukt9

acruukt91#

三个字:控制反转
简而言之:一旦你示例化了“好的老方法”,你就创建了紧耦合,例如:你的控制器依赖于一个特定的模板引擎,你的实体依赖于一个具体的数据库层,等等。这是您想要防止的事情,并且依赖注入容器(DIC)非常方便。它管理您的服务,您不必再关心具体的实现,只要它们实现了相同的接口。
想象一个名为InMemoryLayer的简单存储层类,当您需要它时,它会被您示例化。现在你想把它换成一个名为SuperSecretRemoteCloudLayer的开源GitHub解决方案。通常情况下,您现在可以在所选的IDE中单击“搜索并替换”,并将所有出现的InMemoryLayer替换为SuperSecretRemoteCloudLayer。但这并不方便,而且很容易出错,为什么要手工完成所有这些艰苦的工作呢?DIC可以为您做到这一点,您需要注意的是,两个*Layer实现相同的接口(因此您的应用程序不会中断)。

eqqqjvef

eqqqjvef2#

Spring的重要之处在于依赖注入,而不是基于XML的配置。正如其他人所指出的,Spring已经远离了基于XML的配置。但DI是Spring的核心。
妙处在于DI提供了一种不同的模型来将组件链接在一起。组件不再直接创建彼此(从而紧密耦合),而是停止创建,从一个中心位置注入链接。事实证明,这特别有助于测试和事务管理。

krcsximq

krcsximq3#

你不会真正地欣赏Spring,直到你不得不以艰难的方式做事。困难的方式是在没有一个连贯的框架的情况下维护多个大型项目。如果您有4个大型企业级应用程序,它们都有自己的启动方式和管理资源的方式,那么您将面临一个令人头痛的问题。如果您知道每个应用程序都使用Spring,那么只需查找应用程序上下文XML!这也使得为不同的环境和测试用例设置一个新的上下文变得非常容易,而不会破坏你的代码库。

相关问题