wang_xiao_qiang
wang_xiao_qiang
2015-10-12 02:58
采纳率: 0%
浏览 3.0k

spring注入本质是实现类实例化对象赋值给接口引用,例如一个集合放接口,其实放的是实现类的对象。

spring注入,本质其实就是实例化对象后赋值给接口的引用,在其他类要调用接口时,他不需要考虑实现类,直接和接口打交道,就是通过A d=new a(),但是对象都是由spring实例化,所以spring注入,就是将实例化对象给接口引用,然后来调用一些方法,所以我们在用spring时,是接口的引用。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • wang_xiao_qiang
    wang_xiao_qiang 2015-10-12 02:59

    所以在用他的时候一般要定义一个私有的接口引用,然后注入

    点赞 评论
  • sinat_31944013
    sinat_31944013 2015-10-12 03:10

    在C++中:
    class A {
    public:
    A() {}
    virtual void foo() {
    cout << "This is A." << endl;
    }
    };
    class B : public A {
    public:
    B() {}
    void foo() {
    cout << "This is B." << endl;
    }
    };
    int main(int argc, char* argv[]) {
    A *a = new B();
    a->foo();
    if(a != NULL)
    delete a;
    return 0;
    }
    这将显示:
    This is B.
    如果把virtual去掉,将显示:
    This is A.
    前面的多态实现使用抽象类,并定义了虚方法.
    在java中:
    多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例):
    public interface Parent {
    public void simpleCall();
    }
    public class Child_A implements Parent{
    public void simpleCall(){
    //具体的实现细节;
    }
    }
    public class Child_B implements Parent{
    public void simpleCall(){
    //具体的实现细节;
    }
    }
    //当然还可以有其他的实现
    然后,我们就可以看到多态所展示的特性了:
    Parent pa = new Child_A();
    pa.simpleCall()则显然是调用Child_A的方法;
    Parent pa = new Child_B();
    pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注射机制
    转自百度问问的 为了C币

    点赞 评论

相关推荐