论坛首页 Java企业应用论坛

看部电影,透透彻彻理解IoC(你没有理由再迷惑!)

浏览 32105 次
该帖已经被评为良好帖
作者 正文
   发表时间:2012-05-06  
jinnianshilongnian 写道
cqcya 写道
jinnianshilongnian 写道
Spring现在支持如下依赖注入:
1、构造器注入
2、setter注入
3、接口注入
4、字段注入

lz的书中好像没有提到字段注入


此处补充下 Spring支持的字段注入和接口注入

@Service
class A{
    @Autowired //字段注入 非属性(setter)注入
    private B b;
}


@Service
class A{
       @Autowired  //接口注入
       public void prepare(B b, C c) {
                   ……
       }
}



这楼主是陈雄华吧?

这个文章 很久很久以前就发表过了 2.x系列里面就有

我也一时没明白 这个字段注入是 什么

看到你的 @Autowired 就清楚了
0 请登录后投票
   发表时间:2012-05-06  
谢谢,楼主讲的简单明了,学习了
0 请登录后投票
   发表时间:2012-05-07  
“对于软件来说,即是某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定。”这句算是经典概括。我想会使用框架的人不一定都能搭得上控制指什么,反转又是什么。
0 请登录后投票
   发表时间:2012-07-05  
期待LZ写一下关于工厂模式与回调文章,spring中工厂模式和回调使用很平凡
0 请登录后投票
   发表时间:2012-08-02  
很清楚,第一次看到用这个方式解析,楼主牛人
0 请登录后投票
   发表时间:2012-08-03  
很好!不仅讲明白了IOC容器控制反转。还很好的诠释了OO
0 请登录后投票
   发表时间:2012-08-05  
楼主真的写的太好了,准备买你的书!
0 请登录后投票
   发表时间:2012-08-06  
idlqy 写道
楼主真的写的太好了,准备买你的书!



谢谢支持,对大家真正有帮助才是我最欣慰的。
0 请登录后投票
   发表时间:2012-08-12   最后修改:2012-08-12
stamen 写道
jinnianshilongnian 写道
ubluee 写道
jinnianshilongnian 写道
cqcya 写道
jinnianshilongnian 写道
Spring现在支持如下依赖注入:
1、构造器注入
2、setter注入
3、接口注入
4、字段注入

lz的书中好像没有提到字段注入


此处补充下 Spring支持的字段注入和接口注入

@Service
class A{
    @Autowired //字段注入 非属性(setter)注入
    private B b;
}


@Service
class A{ //=====>> HERE 1
       @Autowired  //接口注入
       public void prepare(B b, C c) {
                   ……
       }
}


HERE 1怎么叫接口注入呢?应该是方法入参注入吧,请问哪儿有定义?


参考
Martin Fowler  Inversion of Control Containers and the Dependency Injection pattern 
http://martinfowler.com/articles/injection.html

   呵呵,我觉得HERE1处说是接口注入,可能不太恰当,Martin Fowler的原话是:
引用
  With this technique I begin by defining an interface that I'll use to perform the injection through. Here's the interface for injecting a movie finder into an object.

   注意他的所说的“defining an interface that I'll use to perform the injection through”,即通过一个接口完成注入的操作,我帖子中的ActorArrangable即是这样的一个接口,它负责注入MoAttach的GeLi对象,所以才是接口注入。
   虽然HERE1处的例子也是通过一个方法完成Bean的注入,在用途上和“接口注入”有异曲同工之效,但是这个方法毕竟没有通过一个接口类定义,而是属于宿主目标定义的方法,因此非Martin Fowler所说的“接口注册”,所以我觉得把它叫“方法入参”注入会更妥些


恩,今天又看了一遍Martin Fowler的依赖注入文档,接口注入我理解错了。如果把之前的稍微一改,这样其实就可以看作接口注入了:
class AInterface {
     public void prepare(B b, C c);
}


@Service
class A implemenets AInterface{
       @Autowired  //接口注入
       public void prepare(B b, C c) {
                   ……
       }
}

正如你说的,这种方式多写一个接口,在大多数情况下没有什么意义,setter注入完全可以完成所有的注入工作。
0 请登录后投票
   发表时间:2012-08-13   最后修改:2012-08-13
楼主,你抄袭了spring 3.x企业开发实战 。。着本书我差不多都看完了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics