Hor*_*ice 12 java spring dependency-injection spring-mvc
几周以来,我一直在阅读Spring in Action一书,以了解弹簧框架.我有大约两年的编程经验,主要是在java中,在Ruby和Python中有一些分心.
在阅读了前几章后,我对春季的依赖注入问题并没有太大的了解.我期待着AHAAA时刻,但还没有体验到.我确定我错过了一些重要的东西.
为什么我要将我的bean连接到xml中,而不是用旧的方式实例化它们 = new myclass();
我知道我可以通过构造函数args和属性在xml中连接bean,以及在spring中配置数据源,这样我就可以隐藏xml文件中的连接细节.但为什么?特别是在良好的软件设计方面,还有更多内容.有人可以解释一下这个大问题吗?
nie*_*fir 12
三个词:控制的反转
简而言之:一旦你即时消除"好老方法",你就会创建紧密耦合,例如:你的控制器依赖于特定的模板引擎,你的实体在具体的数据库层上等等.这是你想要防止的东西,以及依赖注入容器(DIC)非常方便.它管理您的服务,只要那些实现相同的接口,您就不必再关心特定的实现了.
想象一下,一个简单的存储层类调用InMemoryLayer
,在需要时由你实例化.现在,您想要将其切换为一个非常棒的新开源github解决方案SuperSecretRemoteCloudLayer
.通常,您现在可以在您选择的IDE中点击"搜索和替换",并将所有出现的内容InMemoryLayer
替换为SuperSecretRemoteCloudLayer
.但那不是很方便而且非常错误,你为什么要手工做那些艰苦的工作呢?DIC可以为您和您需要处理的所有事情做到这一点,两者都*Layer
实现相同的接口(因此您的应用程序不会中断).
在你不得不以艰难的方式做事之前,你并不真正欣赏春天.在没有连贯框架的情况下维护多个大型项目的艰难方法.如果你有4个大企业级应用程序都有自己的方式来启动自己,并管理资源,你会很头疼.如果您知道每个应用程序都使用spring,那么只需查找应用程序上下文xml!这也使得为不同的环境和测试用例设置新的上下文非常容易,所有这些都不会破坏你的代码库.
Spring最重要的是依赖注入,而不是基于XML的配置.正如其他人所说,Spring已经摆脱了基于XML的配置.但DI是Spring的核心.
a-ha是DI提供了一种将组件链接在一起的不同模型.组件不是直接创建彼此(因此紧密耦合),而是停止这样做,而是从中心位置注入链接.事实证明,这有助于特别是测试和事务管理.
归档时间: |
|
查看次数: |
3929 次 |
最近记录: |