尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

@Lazy

@Lazy
📅 发布时间:2026/7/7 1:18:04

@Lazy

@Lazy 是 Spring 框架中的一个注解,用于控制 Bean 的加载时机,实现延迟初始化(Lazy Initialization)。它的核心作用是:推迟 Bean 的创建,直到第一次被实际使用时才初始化,而不是在 Spring 容器启动时就立即创建

  1. 作用于 @Bean 方法
@ConfigurationpublicclassAppConfig{@Bean@Lazy// 只有当其他 Bean 注入或调用此方法时才会创建publicExpensiveServiceexpensiveService(){returnnewExpensiveService();// 假设初始化很耗时}}
  1. 作用于 @Component 或其派生注解(如 @Service, @Repository)
@Service@Lazy// 整个类的 Bean 延迟初始化publicclassUserService{publicUserService(){System.out.println("UserService 被创建了");}}
  1. 作用于依赖注入点(如构造函数、字段)
@ServicepublicclassOrderService{privatefinalUserServiceuserService;// 只有当 OrderService 被使用时,才会初始化 UserServicepublicOrderService(@LazyUserServiceuserService){this.userService=userService;}}
场景说明
减少启动时间避免在应用启动时初始化所有 Bean(尤其是重量级组件)。
解决循环依赖在某些复杂的循环依赖场景中,@Lazy可作为临时解决方案(但应优先重构代码)。
按需加载资源如数据库连接池、缓存客户端等,只在首次调用时初始化。

什么算“第一次被实际使用”?

场景是否触发初始化
@Autowired声明字段(无@Lazy)❌ 不会(但若宿主 Bean 非懒加载,则随宿主一起初始化)
@Autowired @Lazy声明字段❌ 声明时不触发,✅ 首次调用方法时触发
applicationContext.getBean()✅ 立即触发
被非懒加载的 Bean 直接依赖✅ 随依赖方初始化时触发
仅被定义但从未引用❌ 永远不会初始化

@Lazy 推迟初始化的“第一次使用”,确实包括通过 @Autowired 或 @Resource 注入后的首次方法调用。
特别是当你在注入点上加上 @Lazy 时,Spring 会使用代理实现真正的“按需初始化”。

你可以在 注入点 上加 @Lazy,这是 Spring 提供的一种高级技巧:

@Lazy@ServicepublicclassRecommendationService{...}@ServicepublicclassUserService{@Autowired@LazyprivateRecommendationServicerecommendationService;}

Spring 会给 recommendationService 字段注入一个 动态代理对象(不是真实实例)。
只有当你第一次调用 recommendationService 的任意方法时,Spring 才会:
1.去容器中查找/创建真正的 RecommendationService Bean;
2. 将后续调用委托给真实对象。

如果在Bean上加了@Lazy , 在注入点里没加会发生什么?

@Lazy@ServicepublicclassRecommendationService{...}@ServicepublicclassUserService{@AutowiredprivateRecommendationServicerecommendationService;// ← 无 @Lazy}
  • 虽然 RecommendationService 是懒加载的,
  • 但由于它被 UserService 直接依赖(且 UserService 不是懒加载的),
  • Spring 在创建 UserService 时 仍然需要一个可用的 RecommendationService 实例来完成注入,
  • 所以 RecommendationService 会在 UserService 初始化时被提前创建(即启动时)。

相关新闻

  • 基于51/STM32单片机汽车防盗报警 智能家居 GSM短信 震动报警器31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • LED驱动电源生产商评价体系与甄选要点梳理
  • 磁通门激励与补偿绕组全解析

最新新闻

  • Hermes嵌入式消息交互协议原理解析
  • 实际方案:DoG#
  • 【JAVA毕设源码分享】基于springboot小学数学错题管理及推荐系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 具身智能真机实训:60台实体机器人一周高强度实战
  • OpenRocket火箭仿真:从零开始的完整指南,让航空航天设计变得简单有趣 [特殊字符]
  • 机器人视觉语言模型的捷径效应与泛化性实战验证

日新闻

  • Android逆向分析全能助手:集成化工具链与自动化工作流设计
  • 面搜索(Faceted Search)原理与工程实践指南
  • 神经网络调参避坑指南:从5个常见Loss曲线形态定位超参数问题

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号