Wicket 有这个称为惰性代理工厂的设备。鉴于:
<property name="foo" ref="beanx"/>
这个想法是自动生成一个代理来代替'beanx',然后只有在某些东西实际调用它的方法时才初始化beanx。
似乎这可能是 Spring 的核心功能。它在某个地方吗?
Wicket 有这个称为惰性代理工厂的设备。鉴于:
<property name="foo" ref="beanx"/>
这个想法是自动生成一个代理来代替'beanx',然后只有在某些东西实际调用它的方法时才初始化beanx。
似乎这可能是 Spring 的核心功能。它在某个地方吗?
见LazyInitTargetSource;那可能会做你想做的事。不过,它也需要在目标 bean 上使用 lazy-init="true"。
Spring 单例 bean,最接近你想要的东西,是在初始化 spring 上下文时创建的:http: //static.springsource.org/spring/docs/2.0.x/reference/beans.html#beans-factory-scopes . 所以我相信简短的回答是“不”。不过,您可以通过非常轻松地扩展 Spring 类来实现自己的范围来执行此操作。
Spring会话/请求范围是使用您描述的技术实现的,但它仅用于处理范围基数之间的转换,而不是实例创建。所以 spring 使用相同的概念,但您可能必须创建自己的实现。