百木园-与人分享,
就是让自己快乐。

Spring IOC官方文档学习笔记(四)之依赖项(下)

3.depends-on

(1) depends-on用来表示一个bean的实例化依靠另一个bean的先实例化,如果在一个bean A上定义了depends-on bean B就表示:bean A实例化前先实例化bean B。

<!-- 例一 -->
<beans ...>
    <!-- 对于下面这俩个bean,谁先谁后创建不能确定 -->
    <bean id=\"exampleA\" class=\"cn.example.spring.boke.ExampleA\"></bean>
    <bean id=\"exampleB\" class=\"cn.example.spring.boke.ExampleB\"></bean>
</beans>

<!-- 例二 -->
<beans ...>
    <!-- exampleB depends-on exampleA,因此exampleA会先于exampleB被创建 -->
    <bean id=\"exampleA\" class=\"cn.example.spring.boke.ExampleA\"></bean>
    <bean id=\"exampleB\" class=\"cn.example.spring.boke.ExampleB\" depends-on=\"exampleA\"></bean>
</beans>

4.懒加载

(1) 默认情况下,Spring会在容器启动时初始化所有的singleton bean,因为在这种情况下,某些配置错误会尽早发现,但如果我们不想提前初始化bean,就可以指定bean的lazy-init属性,来延迟初始化bean,这样这个bean会在第一次请求时被初始化而非在容器启动时被初始化

<beans ...>
    <!-- exampleA会在第一次请求时被初始化 -->
    <bean id=\"exampleA\" class=\"cn.example.spring.boke.ExampleA\" lazy-init=\"true\"></bean>
    <!-- exampleB会在容器启动时被初始化 -->
    <bean id=\"exampleB\" class=\"cn.example.spring.boke.ExampleB\"></bean>
</beans>

(2) 注意:当延迟初始化的bean是非延迟初始化的bean的依赖项时,延迟初始化就失效了,它也会在容器启动时被初始化,因为容器在启动时必须为这个非延迟初始化的bean注入依赖项

(3) 使用beans标签上的default-lazy-init属性批量设置延迟初始化的bean

<beans default-lazy-init=\"true\"> 
  <!-- 相当于给容器内的每一个bean都提供了lazy-init=true属性 --> 
</beans>

来源:https://www.cnblogs.com/shame11/p/17003007.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Spring IOC官方文档学习笔记(四)之依赖项(下)

相关推荐

  • 暂无文章