对于下面的例子,在像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;
}
答案 0 :(得分:0)
经过大量的头脑风暴,我已经达成了这个答案:
每当A类被实例化时,就会生成B和C的代理类,它们没有自己的数据。
class proxy_B {}扩展B和类proxy__C扩展C {}
这些代理类满足A类需要B和C实例。
现在,当我们查询与B和C类相关的任何内容时, 即。
b.getSomething()或c.getSOmething()
此时,创建并传递B和C的实际实例。
这也称为延迟初始化。