@Lazy注解
- 作用:延迟Bean的初始化
- 作用范围:类、方法、构造方法、形参、类字段
- 字段:
- value:是否延迟初始化,默认为true
使用场景
- 解决循环依赖
- 由于@Lazy将Bean的初始化时机延迟到了首次使用,因此,当一些Bean很多且初始化较久时,使用懒加载可以减少Spring IOC容器的启动加载时间
@Lazy(false)的作用
网上很多关于@Lazy的帖子都说value = false纯属多余,但是我查看源码时发现并非如此。
若在一个@Configeration类上具有@Lazy,那么该@Configeration类中所有Bean都是延迟加载的。
@Lazy
@Configuration
public class LazyConfig {
@Lazy(false)
@Bean
public User getUser1() {
return new User(678L, 18, "甄步绰");
}
@Bean
public User getUser2() {
return new User(123L, 42, "郝佳霍");
}
}
但如果想要其中某个Bean是即时加载的,则可以为该Bean加上@Lazy(false)使其变为即时加载。
如上代码中,使getUser1 的Bean变为即时加载,则加上@Lazy(false)