春季使用的依赖注入的意义是什么?

几周来,我一直在读《春天在行动》这本书,以了解春天的框架。我有大约2年的编程经验,主要是在Java中,在Ruby和Python中也有一些干扰。

在阅读了前几章之后,我不太明白春天依赖注入有什么大不了的。我期待一个AHAAAA时刻,但还没有完全体验到。我确定我错过了一些重要的东西。

为什么我要用xml连接我的bean,而不是用= new myclass();

我知道我可以通过构造函数args和属性在xml中连接bean,并在spring中配置数据源,以便我可以在xml文件中隐藏连接详细信息。但是为什么?这还有更多,特别是在良好的软件设计方面。有人能解释一下大不了的事情吗?


答案 1

三个字:控制反转

简而言之:一旦你实例化了“好的旧方法”,你就会创建紧密耦合,例如:你的控制器依赖于特定的模板引擎,你的实体依赖于具体的数据库层,等等。这是你想要防止的事情,也是依赖关系注入容器(DIC)非常方便的地方。它管理您的服务,只要这些实现相同的接口,您就不必再关心特定的实现。

想象一下,一个名为“简单存储层”的类,在需要时由您实例化。现在你想把它换成一个很棒的新的开源github解决方案,叫做。通常,您现在可以在所选的IDE中点击“搜索和替换”,并将所有出现的替换为.但这并不是真的方便,而且非常错误,你为什么要手工做所有这些艰苦的工作呢?DIC可以为您做到这一点,您需要注意的是,两者都实现了相同的接口(因此您的应用程序不会中断)。InMemoryLayerSuperSecretRemoteCloudLayerInMemoryLayerSuperSecretRemoteCloudLayer*Layer


答案 2

Spring的大问题更多的是关于依赖注入,而不是基于XML的配置。正如其他人所指出的,Spring已经摆脱了基于XML的配置。但DI是春天的核心。

a-ha是DI为将组件链接在一起提供了不同的模型。组件不是直接相互创建(因此紧密耦合),而是停止这样做,并且从中心位置注入链接。事实证明,这尤其有助于测试和事务管理。


推荐