通过 @Lazy 实现 bean 的延迟加载
只支持单实例
默认单实例是在项目启动时创建对象,通过@Lazy可以在bean第一次使用的时候创建对象
编写配置类
package com.demon.config;
import com.demon.bean.User;
import org.springframework.context.annotation.*;
import org.springframework.web.context.WebApplicationContext;
/**
* 配置类
* @author Demon-HY
* @date 2019-12-9
*/
@ComponentScan(value = "com.demon")
@Configuration
public class Config2 {
/**
* 给 Spring 容器注册一个 bean, bean 的 id 默认是方法名</br>
* 可以手动指定id: @Bean("方法名")
*/
// 懒加载
@Lazy
@Bean("user")
public User user() {
// 观察懒加载效果
System.out.println("User 实例初始化");
return new User("Demon-HY", 18);
}
}
编写测试用例
package com.demon;
import com.demon.bean.User;
import com.demon.config.Config;
import com.demon.config.Config2;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* @author Demon-HY
* @date 2019-12-9
*/
public class IOCTest {
// 测试 @Lazy 懒加载
@Test
public void test3() {
// 通过注解方式生成 Spring 上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config2.class);
// 打印容器中注册的bean
System.out.println("容器创建完成");
User user1 = context.getBean(User.class);
// 打印
// 容器创建完成
// User 实例初始化
}
}
来源:CSDN
作者:Demon-HY
链接:https://blog.csdn.net/u014186972/article/details/103485115