Java中代理模式的内部工作?

时间:2018-04-06 09:11:42

标签: java spring dependency-injection proxy autowired

对于下面的例子,在像Spring和Hibernate这样的代理模式中,当A类被加载时,B和C类没有加载,直到某些操作如b.bgh没有完成。

我的问题是,当我们没有写任何

时,b.bgh如何创建b的对象

b = new B();

同样,弹簧的自动装配功能如何运作。?

  class A{
    int abc;
    B b;
    A(){
    }
    }

    class B{
    int bgh;
     C c;
    B();
    }


    class C{
    String jkl;

    }

1 个答案:

答案 0 :(得分:0)

经过大量的头脑风暴,我已经达成了这个答案:

每当A类被实例化时,就会生成B和C的代理类,它们没有自己的数据。

class proxy_B {}扩展B和类proxy__C扩展C {}

这些代理类满足A类需要B和C实例。

现在,当我们查询与B和C类相关的任何内容时, 即。

b.getSomething()或c.getSOmething()

此时,创建并传递B和C的实际实例。

这也称为延迟初始化。