Spring @Lazy注解

255 阅读1分钟

@Lazy注解

  • 作用:延迟Bean的初始化
  • 作用范围:类、方法、构造方法、形参、类字段
  • 字段:
    • value:是否延迟初始化,默认为true

使用场景

  1. 解决循环依赖
  2. 由于@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)