• 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就会被加载。

  • 相关阅读:
    Javaweb安全——JSP Webshell
    【计算机毕业设计】23.网上商城购物系统+vue
    uniapp小程序实现上下固定中间滑动布局(附源码和实现过程讲解)
    微信支付v3接口的 官方 Java SDK
    分布式搜索———黑马旅游
    序列化反射filter添加Neo-reGeorg内网代理
    Android RecyclerView 之 吸顶效果
    git 设置ignore文件
    暴力递归转动态规划(十七)
    多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head
  • 原文地址:https://blog.csdn.net/m0_61682705/article/details/133982500