【问题标题】:Internal working of Proxy Pattern in Java?Java中代理模式的内部工作?
【发布时间】:2018-04-06 09:11:42
【问题描述】:

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

我的问题是,b.bgh 在我们没有写任何东西的情况下如何创建 b 的对象

b= 新 B();

同样,spring 的自动装配功能是如何工作的?

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

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


    class C{
    String jkl;

    }

【问题讨论】:

    标签: java spring dependency-injection proxy autowired


    【解决方案1】:

    经过大量的头脑风暴,我得出了这个答案:

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

    class proxy_B{} 扩展 B,class proxy__C 扩展 C{}

    这些代理类满足了A类拥有B和C实例的需求。

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

    b.getSomething() 或 c.getSOthing()

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

    这也称为延迟初始化。

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 2011-08-29
      • 2015-08-21
      相关资源
      最近更新 更多