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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Mybatis中ResultMap解决属性名和数据库字段名不一致问题
我们Pojo类的属性名和数据库中的字段名不一致的现象时有发生,本文就详细的介绍一下Mybatis中ResultMap解决属性名和数据库字段名不一致问题,感兴趣的可以了解一下2021-10-10
SpringBoot Application的exclude不生效问题及排查
这篇文章主要介绍了SpringBoot Application的exclude不生效问题及排查,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11
Java servlet、filter、listener、interceptor之间的区别和联系
这篇文章主要介绍了Java servlet、filter、listener、interceptor之间的区别和联系的相关资料,需要的朋友可以参考下2016-11-11


最新评论