本人菜鸟,spring不怎么了解,看了下spring感觉接口注入和属性注入基本上没什么区别,那接口注入是不是多余的,既然存在那一定有理由,还望各位老鸟们不要笑话我,给我指点下,谢谢!

解决方案 »

  1.   


    public class MyServlet extends HttpServlet {
    public void doGet(
    HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {
    ……
    }
    }这个代码你应该会觉得特别眼熟,我在以前的公司用的框架也是这种方式。
    这就是所谓的接口注入。将要扩展的功能都写到规定好的方法里,让容器来调用。属性注入:
    在各种类型的依赖注入模式中,设值注入模式在实际开发中得到了最广泛的应用(其中很大一部分得
    力于Spring框架的影响)。
    在笔者看来,基于设置模式的依赖注入机制更加直观、也更加自然。Quick Start中的示例,就是典
    型的设置注入,即通过类的setter方法完成依赖关系的设置。[摘自Spring开发指南]这两种方式显然是有区别的。
    “在笔者看来,基于设置模式的依赖注入机制更加直观、也更加自然。”
    我觉得作者写的很好,可能你要做几个实际的项目以后,才能体会到。
      

  2.   

    IoC的三种类型
    从注入方法上看,主要可以划分为三种的注入类型,分别是构造函数注入、属性注入和接口注入,Spring支持构造函数注入和属性注入。下面我们继续使用以上的例子说明这三种注入方法的区别。http://www.qqread.com/erp/3/j380307_2.html
    楼主去看看
      

  3.   

      GeLi geli = new LiuDeHua();
           MoAttack moAttack = new MoAttack();
           moAttack. injectGeli (geli);
           moAttack.cityGateAsk();
     GeLi geli = new LiuDeHua();
        MoAttack moAttack = new MoAttack();
        moAttack.setGeli(geli); ① 调用属性setter方法注入
        moAttack.cityGateAsk();
    这两段式属性注入和接口注入, 是不是很相似呢?
    我的疑问就在这里,还麻烦各位了,我菜鸟不能理解!
      

  4.   

    GeLi geli = new LiuDeHua();
            MoAttack moAttack = new MoAttack();
            moAttack. injectGeli (geli);
            moAttack.cityGateAsk();
    中的injectGeli()方法是该类实现了一个接口所必须实现的方法,只要实现了该接口,就可以通过这个方法注入。
    GeLi geli = new LiuDeHua();
         MoAttack moAttack = new MoAttack();
         moAttack.setGeli(geli); ① 调用属性setter方法注入
         moAttack.cityGateAsk();
    中的 setGeli()方法是在MaAttack类中定义的,现在通过这个方法的注入不需要实现任何的接口。只需要在MaAttack中定义这个setGeli方法。这是我的理解
      

  5.   

    注入这种东西不多余 我虽然不用Spring 但是可以通过操作XML文件来更改类里的参数或者对象不同的实现 的确很好玩