• spring懒加载


    简介

     Spring默认会在容器初始化的过程中,解析xml或注解,创建配置为单例的bean并保存到一个map中,这样的机制在bean比较少时问题不大,但一旦bean非常多时,spring需要在启动的过程中花费大量的时间来创建bean ,花费大量的空间存储bean,但这些bean可能很久都用不上,这种在启动时在时间和空间上的浪费显得非常的不值得。

           所以Spring提供了懒加载机制。所谓的懒加载机制就是可以规定指定的bean不在启动时立即创建,而是在后续第一次用到时才创建,从而减轻在启动过程中对时间和内存的消耗。

           懒加载机制只对单例bean有作用,对于多例bean设置懒加载没有意义,因为多例bean本来就是在使用时才创建的。

    懒加载

    在User类中增加一个初始化方法

    1. public void init(){
    2. System.out.println("初始化");
    3. }

    在配置文件中,声明这个bean的初始化方法,当该userbean被加载的时候就会执行初始化方法,意味着该bean被加载了

           <bean name="user" class="com.shen.User" init-method="init"/>
    

    在测试类中创建容器,并执行

    1. ApplicationContext applicationContext =
    2. new ClassPathXmlApplicationContext("application2.xml");

    会发现即使什么也没做的情况下还是会加载bean
    在这里插入图片描述

    此时向名为User的bean增加一个 lazy-init 如下,就会启动懒加载

     <bean name="user" class="com.shen.User" init-method="init" lazy-init="true"/>
    

    再次执行测试类

    在这里插入图片描述
    会发现现在什么也打印,意味着Spring中的bean没有被加载,这时候试着获取spring容器中的bean,再次执行,会发现bean被加载了。

    1. ApplicationContext applicationContext =
    2. new ClassPathXmlApplicationContext("application2.xml");
    3. User user = (User)applicationContext.getBean("user");

    在这里插入图片描述

    如果一个bean开启了懒加载,那么只有从容器中获取的时候才会被加载,如果一个bean没有开启懒加载那么只要容器被初始化 bean就会被加载。

  • 相关阅读:
    MacOS 控制固态磁盘写入量,设置定时任务监控
    Java另一棵树的子树
    自动驾驶学习笔记(十)——Cyber通信
    人人可懂的任务调度和可中断执行
    在嵌入式设备中用多项式快速计算三角函数和方根
    【RocketMQ】Dledger模式下的日志复制
    3.1、数据链路层概述
    Codeforces 348B 思维
    数据库-MySQL-基础(6)- DCL
    界面组件DevExpress WinForms v23.1亮点 - 全新升级HTML & CSS模板
  • 原文地址:https://blog.csdn.net/m0_61682705/article/details/133982500