Spring中的@Lazy注解用法实例

 更新时间:2023年08月12日 08:51:48   作者:大树下躲雨  
这篇文章主要介绍了Spring中的@Lazy注解用法实例,在Spring中常用于单实例Bean对象的创建和使用,单实例Bean懒加载容器启动后不创建对象,而是在第一次获取Bean创建对象时,初始化,需要的朋友可以参考下

一、@Lazy注解

1、@Lazy注解作用

lazy 翻译过来是"懒惰的"

@Lazy(懒加载):该注解用于惰性加载初始化标注的类、方法和参数。

在Spring中常用于单实例Bean对象的创建和使用;

单实例Bean懒加载:容器启动后不创建对象,而是在第一次获取Bean创建对象时,初始化。

在这里插入图片描述

2、@Lazy

可标注在类、方法、构造方法、参数、字段上

@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Lazy {
   /**
    * Whether lazy initialization should occur.
    */
   boolean value() default true;
}

二、@Lazy案例

1、项目结构

在这里插入图片描述

2、Persion

package com.dashu.bean;
public class Persion {
    public Persion(String name, int age) {
        this.name = name;
        this.age = age;
    }
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Persion{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

3、Bean注册配置类

package com.dashu.config;
import com.dashu.bean.Persion;
import org.springframework.context.annotation.*;
/**
 * @Configuration 注解:告诉Spring这是一个配置类
 *
 * 配置类 == 配置文件(beans.xml文件)
 *
 */
@Configuration
public class BeanConfig {
    @Lazy
    @Bean
    public Persion persion(){
        System.out.println("初始化Persion...");
        return new Persion("张三",20);
    }
}

4、测试类

package com.dashu;
import com.dashu.bean.Persion;
import com.dashu.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
 public static void main(String[] args) {
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
        /**
         * 只在第一次获取Bean时,初始化。之后的获取都是同一个对象
         */
        Persion persion1 = (Persion) annotationConfigApplicationContext.getBean("persion");
        Persion persion2 = annotationConfigApplicationContext.getBean(Persion.class);
        System.out.println(persion1 == persion2);
    }
}

5、测试结果

在这里插入图片描述

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

相关文章

  • 图解Java经典算法归并排序的原理与实现

    图解Java经典算法归并排序的原理与实现

    归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。本文将通过动图详解归并排序的原理及实现,需要的可以参考一下
    2022-09-09
  • Java中File、Base64、MultipartFile之间相互转换的代码详解

    Java中File、Base64、MultipartFile之间相互转换的代码详解

    File、Base64和MultipartFile都是在编程中常用的类或者数据类型,用于处理文件和数据的存储、传输和转换等操作,本文将给大家介绍了Java中File、Base64、MultipartFile之间相互转换,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • 详细谈谈Java中long和double的原子性

    详细谈谈Java中long和double的原子性

    原子性是指一个操作或多个操作要么全部执行,且执行的过程不会被任何因素打断,要么就都不执行,下面这篇文章主要给大家介绍了关于Java中long和double原子性的相关资料,需要的朋友可以参考下
    2021-08-08
  • SpringMVC请求数据详解讲解

    SpringMVC请求数据详解讲解

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Spring MVC 角色划分清晰,分工明细,本章来讲解SpringMVC如何请求数据
    2022-07-07
  • 利用Java读取二进制文件实例详解

    利用Java读取二进制文件实例详解

    这篇文章主要给大家介绍了利用Java读取二进制文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用java具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • 如何计算Java对象占用了多少空间?

    如何计算Java对象占用了多少空间?

    在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小,需要的朋友可以参考下
    2016-01-01
  • 解决CollectionUtils.isNotEmpty()不存在的问题

    解决CollectionUtils.isNotEmpty()不存在的问题

    这篇文章主要介绍了解决CollectionUtils.isNotEmpty()不存在的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java 实现并发的几种方式小结

    Java 实现并发的几种方式小结

    这篇文章主要介绍了Java 实现并发的几种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Mybatis通过Spring完成代理类注入的流程分析

    Mybatis通过Spring完成代理类注入的流程分析

    这篇文章主要介绍了Mybatis通过Spring完成代理类注入的流程分析,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Java静态泛型使用方法实例解析

    Java静态泛型使用方法实例解析

    这篇文章主要介绍了Java静态泛型使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论