`
mhhtj
  • 浏览: 10231 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring解惑

阅读更多

前记
由于接手一个项目,用到spring。用了一段时间,基本上是依葫芦画瓢,有很多地方一知半解。
最近看了一下相关的书籍,算作是实践过后重新来补理论,有些不懂的地方豁然开朗。记下,记下。当然,肯定有很多说得不对的地方,请高手看到了不妨提醒一下。
(1) 困惑:在使用spring的依赖注入的时候,由于一个service里面用到了很多其他java 实例的属性,不明白哪些属性

                   需要依赖注入,哪些不需要。 
          原因:没有弄明白依赖注入会带来什么,即为什么要用到依赖注入。
          解惑:一般,当某个java实例需要另一个java实例时,通常会由调用者自己来创建被调用者的实例。而在依赖诸如

                   的模式下,这个创建过程不需要由创建者来完成。这样就使各种组件不需要以硬编码方式耦合在一起,使对

                   象与对象中间的具体实现互相透明。
                   有个很好的例子可以充分说明依赖注入的好处:一个人(java实例)需要一把斧子(java实例)。
                   原始社会:需要斧子的人只能自己去磨一把斧子,即java程序里的调用者自己创建被调用者。
                   工业社会:斧子由工厂生产。此时需要斧子的人只需找到工厂,购买斧子。即调用者只需定位到工厂,无须

                                  知道被调用者的具体实现。
                   共产社会:需要斧子的人无须定位到工厂,“坐等”社会提供即可。而依赖注入就是共产社会。
                   那么回到最初的困惑,到底哪些属性是需要依赖注入的,哪些是不需要的呢?在明白了依赖注入会带来什么

                   好处之后,这个问题就很清楚了。这里排除那些值注入的除外,当某个属性对应java实例其实现细节一直在

                   变,调用者可能因为被调用者的实现细节的变更进而影响到自身也要变的话,这个时候就需要依赖注入,让

                   他们之间解藕。
(2) 困惑:为什么依赖注入的属性其声明类都是接口呢?
          解惑: 这依然是为了解藕。这也是spring提倡的面向接口编程所带来的好处,就是解藕嘛。

 

分享到:
评论
1 楼 husituo 2008-09-06  
 
你写不错。
谢谢你。

相关推荐

Global site tag (gtag.js) - Google Analytics