Spring的@Lazy懒加载注解用法详细解析

 更新时间:2023年11月24日 11:17:11   作者:IT技术分享社区  
这篇文章主要介绍了Spring的@Lazy懒加载注解用法详细解析,SpringIoC容器会在启动的时候实例化所有单实例 bean ,如果我们想要实现 Spring 在启动的时候延迟加载 bean,即在首次调用bean的时候再去执行初始化,就可以使用 @Lazy 注解来解决这个问题,需要的朋友可以参考下

1、@Lazy 懒加载注解的概念

SpringIoC容器会在启动的时候实例化所有单实例 bean 。如果我们想要实现 Spring 在启动的时候延迟加载 bean,即在首次调用bean的时候再去执行初始化,就可以使用 @Lazy 注解来解决这个问题。

注意:使用@Lazy的前提是要操作的Bean要使用默认的单例模式。

2、@Lazy 懒加载注解作用

使用@Lazy懒加载注解可以减少springIOC容器启动过程的加载时间。

3、@Lazy 懒加载注解使用示例

3.1 新建配置类TestLazyConfig.java

package com.spring.config;
 
 
import com.spring.bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
 
 
@Configuration
//@Lazy注解作用于类上时,通常与@Component及其衍生Spring注解配合使用。
/*@Component
@Lazy*/
public class TestLazyConfig {
 // @Lazy注解属性 Value 取值为 true、false 。默认为true 表示启用懒加载。
 //false 表示不启用,基本用不到,如果不启用的话,不需要加@Lazy注解
// @Lazy注解作用于在类方法上时,通常与@Bean注解配合使用。
    @Lazy
    @Bean
    public Person person() {
        System.out.println("测试容器添加Person对象......");
        return new Person("小孙", 28, "西安");
    }
}

3.2 新建测试类 TestLazy.java

package com.spring.test;
 
 
import com.spring.config.TestLazyConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
 
public class TestLazy {
    public static void main(String[] args) {
// @Lazy 注解启用的时候 不进行类初始化,
// 不启用的时候会进行类初始化 
//控制台输出:测试容器添加Person对象......
AnnotationConfigApplicationContext annotationContext = new AnnotationConfigApplicationContext(TestLazyConfig.class);
// 第一次获取Bean对象 会进行类初始化  
//控制台输出:测试容器添加Person对象......
        Object person1 = annotationContext.getBean("person");
        // 第二次获取Bean对应 不会载进行类初始化
        Object person2 = annotationContext.getBean("person");
    }
}

到此这篇关于Spring的@Lazy懒加载注解用法详细解析的文章就介绍到这了,更多相关@Lazy懒加载注解用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现Kafka生产者消费者代码实例

    Java实现Kafka生产者消费者代码实例

    这篇文章主要介绍了Java实现Kafka生产者消费者代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java实现XML与JSON转换的便捷实用方法

    java实现XML与JSON转换的便捷实用方法

    这篇文章主要为大家介绍了java实现XML与JSON转换的便捷实用方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Tomcat安装配置及Eclipse配置详解

    Tomcat安装配置及Eclipse配置详解

    给大家介绍一下Tomcat安装配置及Eclipse配置的全部图文过程,如果你对这个还有不明白,一起跟着小编学习下。
    2017-11-11
  • Java 实现常见的非对称加密算法

    Java 实现常见的非对称加密算法

    这篇文章主要介绍了Java 实现常见的非对称加密算法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11
  • SpringBoot使用thymeleaf实现前端表格

    SpringBoot使用thymeleaf实现前端表格

    虽然现在流行前后端分离,但是后端模版在一些关键地方还是非常有用的,例如邮件模版、代码模版等。当然也不排除一些古老的项目后端依然使用动态模版。Thymeleaf 简洁漂亮、容易理解,并且完美支持 HTML5,可以直接打开静态页面,同时不新增标签,只需增强属性
    2022-10-10
  • mybatis-plus判断参数是否为空并作为查询条件详解

    mybatis-plus判断参数是否为空并作为查询条件详解

    文章介绍了MyBatis-Plus中判断参数是否为空并作为查询条件的两种方式:全局配置和单独判断,作者分享了自己的经验,希望能对大家有所帮助
    2026-03-03
  • Java面向程序的三大特性之封装、继承、多态详解(最新整理)

    Java面向程序的三大特性之封装、继承、多态详解(最新整理)

    面向对象程序三大特性:封装、继承、多态,而类和对象阶段,主要研究的就是封装特性,何为封装呢?简单来说就是套壳屏蔽细节,本文给大家介绍Java面向程序的三大特性之封装、继承、多态,感兴趣的朋友一起看看吧
    2025-06-06
  • Spring中的动态数据源解读

    Spring中的动态数据源解读

    这篇文章主要介绍了关于Spring中的动态数据源解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • idea创建springboot项目和springcloud项目的详细教程

    idea创建springboot项目和springcloud项目的详细教程

    这篇文章主要介绍了idea创建springboot项目和springcloud项目方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • shardingsphere-jdbc5.5.1分库分表实战

    shardingsphere-jdbc5.5.1分库分表实战

    本文主要介绍了shardingsphere-jdbc5.5.1分库分表实战,解决了分表和读写分离的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01

最新评论