• 【Spring】——5、@Lazy懒加载


    在这里插入图片描述

    📫作者简介:zhz小白
    公众号:小白的Java进阶之路
    专业技能:
    1、Java基础,并精通多线程的开发,熟悉JVM原理
    2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线上调优经验
    3、熟悉MySQL数据库调优,索引原理等,⽇志原理等,并且有出过⼀篇专栏
    4、了解计算机⽹络,对TCP协议,滑动窗⼝原理等有⼀定了解
    5、熟悉Spring,Spring MVC,Mybatis,阅读过部分Spring源码
    6、熟悉SpringCloud Alibaba体系,阅读过Nacos,Sentinel,Seata,Dubbo,Feign,Gateway核⼼源码与设计,⼆次开发能⼒
    7、熟悉消息队列(Kafka,RocketMQ)的原理与设计
    8、熟悉分库分表ShardingSphere,具有真实⽣产的数据迁移经验
    9、熟悉分布式缓存中间件Redis,对其的核⼼数据结构,部署架构,⾼并发问题解决⽅案有⼀定的积累
    10、熟悉常⽤设计模式,并运⽤于实践⼯作中
    11、了解ElasticSearch,对其核⼼的原理有⼀定的了解
    12、了解K8s,Jekins,GitLab
    13、了解VUE,GO
    14、⽬前有正在利⽤闲暇时间做互游游戏,开发、运维、运营、推销等

    本人著作git项目:https://gitee.com/zhouzhz/star-jersey-platform,有兴趣的可以私聊博主一起编写,或者给颗star
    领域:对支付(FMS,FUND,PAY),订单(OMS),出行行业等有相关的开发领域
    🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~

    什么是懒加载呢?

    懒加载就是Spring容器启动的时候,先不创建对象,在第一次使用(获取)bean的时候再来创建对象,并进行一些初始化

    非懒加载模式

    首先第一步我们先在MainConfig中添加一个@Bean的一个Bean对象:

     @Bean(name = "person")
        public Person person() {
            System.out.println("单例bean创建");
            return new Person("zhz", 20);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后创建一个测试类,去扫描,读取该bean,看看他的加载顺序:

    public void test() {
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
        }
    
    • 1
    • 2
    • 3

    运行结果:
    在这里插入图片描述

    总结:我们可以发现正常情况下Bean是随着Spring容器加载的时候就创建了。

    懒加载模式

    首先我们还是搞一个Bean对象,不过这个bean对象跟上面非懒加载模式下的区别就是多了个@Lazy

    @Lazy
    @Bean(name = "person")
    public Person person() {
        System.out.println("单例bean创建");
        return new Person("zhz", 20);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    然后我们还是一样的测试类,如下测试方法1:

      @Test
        public void test() {
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
    
    
    • 1
    • 2
    • 3
    • 4

    演示效果:
    在这里插入图片描述

    如下测试方法2:

    @Test
        public void test() {
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
            Person person = applicationContext.getBean(Person.class);
            System.out.println(person);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    展示效果:
    在这里插入图片描述

    总结:由上面两幅图,我们可以知道加了@Lazy之后,只有真正加载的时候才会创建。

    总结

    懒加载,也称延时加载,仅针对单实例bean生效。 单实例bean是在Spring容器启动的时候加载的,添加@Lazy注解后就会延迟加载,在Spring容器启动的时候并不会加载,而是在第一次使用此bean的时候才会加载,但当你多次获取bean的时候并不会重复加载,只是在第一次获取的时候才会加载,这不是延迟加载的特性,而是单实例bean的特性。

  • 相关阅读:
    透明窗体和控件
    免费分享一套SpringBoot+Vue家政服务管理平台管理系统,帅呆了~~
    女朋友让我深夜十二点催她睡觉,我有Python我就不干
    Docker面试题大全整理
    3 垃圾收集算法
    Git初识与安装
    vue基本概念
    3d标签云实现过程(tagcloud.js)同步原生和 vue
    【详细图文】Windows下安装RustRover和配置Rust环境
    HTTP代理协议原理分析
  • 原文地址:https://blog.csdn.net/zhouhengzhe/article/details/127896394