Spring源码分析(四)-注解lazy懒加载

本文深入探讨了Spring框架中懒加载(@Lazy)的概念及其应用。详细介绍了如何通过在Bean定义上使用@Lazy注解来实现单实例bean的延迟加载,即在容器启动时不立即创建对象,而是在首次请求时才实例化。并通过示例代码展示了懒加载的实现过程。

lazy 懒加载,主要针对单实例bean,容器启动时候不创建对象,仅当第一次使用的bean才创建

新建Cap4MainConfig.java

package com.caojiulu.cap4;

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 com.caojiulu.cap1.bean.Person;

@Configuration
public class Cap4MainConfig {

	//给容器中注册bean,类型为返回值的类型,默认是单实例
	/**
	 * 懒加载:主要针对单实例bean,:默认是容器启动的时候创建对象
	 * 加上lazy,容器启动时候不创建对象,仅当第一次使用的bean才创建
	 * @return
	 */
	@Lazy
	@Bean
	public Person person(){
		System.out.println("22222");
		return new Person("caojiulu",24);
	}
}

2,建立测试用例test01();

package com.caojiulu.cap4;

import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Cap4Test {
	@Test
	public void test01(){
		AnnotationConfigApplicationContext app = new AnnotationConfigApplicationContext(Cap4MainConfig.class);
		
		String[] beanDefinitionNames = app.getBeanDefinitionNames();
		
		for (String name : beanDefinitionNames) {
			System.out.println("bean -->"+name);
		}
		Object bean1 = app.getBean("person");
		Object bean2 = app.getBean("person");
		
		System.out.println(bean1==bean2);
	}

}

当在Cap4MainConfig加入@Lazy时,  只有获取anno.getBean时才会加载到IOC容器中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值