You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Core中@ComponentScan未设lazyInit时@Lazy Bean的加载规则

Spring Core中@Lazy注解与@ComponentScan全局懒加载的优先级问题

结论:不需要为@ComponentScan添加lazyInit=true,标注了@Lazy的Bean A依然会被懒加载。

Spring的懒加载配置遵循「局部注解优先于全局配置」的规则:

  • @ComponentScan的lazyInit参数是全局层面的默认规则,默认false意味着容器启动时会初始化所有未标记@Lazy的Bean。
  • 而直接标注在Bean类上的@Lazy注解,是针对该Bean的个性化配置,它会覆盖全局的默认规则,强制让这个Bean延迟到第一次被依赖注入或主动获取时才完成初始化。

举个实际代码验证的例子:

// 标注@Lazy的Bean
@Component("A")
@Lazy
public class BeanA {
    public BeanA() {
        System.out.println("BeanA 已初始化");
    }
}

// 未设置lazyInit的配置类
@Configuration
@ComponentScan(basePackages = "your.package.path")
public class AppConfig {
}

启动Spring容器时,控制台不会输出BeanA 已初始化;只有当你通过ApplicationContext.getBean("A")获取该Bean,或者有其他Bean依赖注入BeanA时,才会触发初始化并打印日志,这就证明BeanA是懒加载的。

内容的提问来源于stack exchange,提问作者Ragesh Rajendran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:27:33