此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
延迟初始化的 Bean
默认情况下,ApplicationContext
作为初始化的一部分,实现急切地创建和配置所有 singleton bean
过程。通常,这种预实例化是可取的,因为
配置或周围环境会立即被发现,而不是几个小时
甚至几天后。当此行为不可取时,您可以阻止
通过将 Bean 定义标记为
lazy-initialized 初始化的。延迟初始化的 Bean 告诉 IoC 容器创建一个 Bean
instance,而不是在启动时。
在 XML 中,此行为由lazy-init
属性<bean/>
元素,如下例所示:
<bean id="lazy" class="com.something.ExpensiveToCreateBean" lazy-init="true"/>
<bean name="not.lazy" class="com.something.AnotherBean"/>
当上述配置被ApplicationContext
这lazy
豆
不会预先实例化ApplicationContext
开始
而not.lazy
bean 是预先实例化的。
但是,当延迟初始化的 bean 是单例 bean 的依赖项时,即
not lazy-initialized,则ApplicationContext
在
startup,因为它必须满足单例的依赖项。延迟初始化的 bean
被注入到其他位置未进行延迟初始化的单例 bean 中。
您还可以使用default-lazy-init
属性<beans/>
元素,如下例所示:
<beans default-lazy-init="true">
<!-- no beans will be pre-instantiated... -->
</beans>