@Lazy LazyLazy 是 Spring 框架中的一个注解用于控制 Bean 的加载时机实现延迟初始化Lazy Initialization。它的核心作用是推迟 Bean 的创建直到第一次被实际使用时才初始化而不是在 Spring 容器启动时就立即创建作用于 Bean 方法ConfigurationpublicclassAppConfig{BeanLazy// 只有当其他 Bean 注入或调用此方法时才会创建publicExpensiveServiceexpensiveService(){returnnewExpensiveService();// 假设初始化很耗时}}作用于 Component 或其派生注解如 Service, RepositoryServiceLazy// 整个类的 Bean 延迟初始化publicclassUserService{publicUserService(){System.out.println(UserService 被创建了);}}作用于依赖注入点如构造函数、字段ServicepublicclassOrderService{privatefinalUserServiceuserService;// 只有当 OrderService 被使用时才会初始化 UserServicepublicOrderService(LazyUserServiceuserService){this.userServiceuserService;}}场景说明减少启动时间避免在应用启动时初始化所有 Bean尤其是重量级组件。解决循环依赖在某些复杂的循环依赖场景中Lazy可作为临时解决方案但应优先重构代码。按需加载资源如数据库连接池、缓存客户端等只在首次调用时初始化。什么算“第一次被实际使用”场景是否触发初始化Autowired声明字段无Lazy❌ 不会但若宿主 Bean 非懒加载则随宿主一起初始化Autowired Lazy声明字段❌ 声明时不触发✅ 首次调用方法时触发applicationContext.getBean()✅ 立即触发被非懒加载的 Bean 直接依赖✅ 随依赖方初始化时触发仅被定义但从未引用❌ 永远不会初始化Lazy 推迟初始化的“第一次使用”确实包括通过 Autowired 或 Resource 注入后的首次方法调用。特别是当你在注入点上加上 Lazy 时Spring 会使用代理实现真正的“按需初始化”。你可以在 注入点 上加 Lazy这是 Spring 提供的一种高级技巧LazyServicepublicclassRecommendationService{...}ServicepublicclassUserService{AutowiredLazyprivateRecommendationServicerecommendationService;}Spring 会给 recommendationService 字段注入一个 动态代理对象不是真实实例。只有当你第一次调用 recommendationService 的任意方法时Spring 才会1.去容器中查找/创建真正的 RecommendationService Bean2. 将后续调用委托给真实对象。如果在Bean上加了Lazy , 在注入点里没加会发生什么?LazyServicepublicclassRecommendationService{...}ServicepublicclassUserService{AutowiredprivateRecommendationServicerecommendationService;// ← 无 Lazy}虽然 RecommendationService 是懒加载的但由于它被 UserService 直接依赖且 UserService 不是懒加载的Spring 在创建 UserService 时 仍然需要一个可用的 RecommendationService 实例来完成注入所以 RecommendationService 会在 UserService 初始化时被提前创建即启动时。

相关新闻

最新新闻

ABAQUS颗粒随机生成建模:Python脚本实现细观仿真全流程

ABAQUS颗粒随机生成建模:Python脚本实现细观仿真全流程

简介:本资源是一套面向工程仿真初学者与ABAQUS自动化建模实践者的颗粒随机生成建模工具包,聚焦粉末、土壤等离散颗粒系统的有限元前处理难题。资源通过Python脚本驱动ABAQUS CAE实现从坐标生成、球体建模、装配定位到材料赋值与接触定义的全流程自动化&a…

2026/8/31 16:15:26
Zabbix与Prometheus监控实战:从选型到部署告警全流程

Zabbix与Prometheus监控实战:从选型到部署告警全流程

Zabbix 和 Prometheus 是运维监控里绕不开的两套方案。很多新手纠结的第一个问题就是“到底学哪个”,实际工作里更常见的答案是:两个都可能出现在你面前。Zabbix 擅长管主机、网络设备和传统架构,Prometheus 擅长管容器、Kubernetes 和微服务…

2026/8/31 16:15:26
MOS管开关电路设计:从原理到选型与故障排查

MOS管开关电路设计:从原理到选型与故障排查

MOS管看起来不难,但实际一上手就很容易蒙:三个极记不住,导通条件说不清,搭出来的开关电路要么关不断,要么发烫,要么工作一会儿就烧掉。网上“2分钟全面了解MOS管”的标题确实吸引人,但以实际工程…

2026/8/31 16:15:26
SSM框架人事管理系统源码解析:架构设计与部署实践

SSM框架人事管理系统源码解析:架构设计与部署实践

简介:这是一套面向Java初学者与中级开发者的SSM框架实战项目源码,聚焦企业级人事管理核心业务场景,涵盖员工、部门、职位、公告、下载中心等完整模块,助力开发者掌握Web应用开发全流程。资源包共284个文件,包含29个核心…

2026/8/31 16:15:26
Fluent多雷诺数卡门涡街仿真完整指南:从网格到频谱分析

Fluent多雷诺数卡门涡街仿真完整指南:从网格到频谱分析

简介:本资源是面向流体力学仿真初学者与工程实践者的Fluent多雷诺数卡门涡街模拟案例包,聚焦湍流状态下圆柱绕流涡街演化规律的数值复现与分析,适用于CFD教学、风工程优化及流致振动研究等场景。压缩包共1783个文件,272.2MB&#…

2026/8/31 16:15:26
【实事求是系列】手机ROM上,日落一个软件特性知多少?

【实事求是系列】手机ROM上,日落一个软件特性知多少?

最近听到一句话,感触很深: “你们做的这些竞争力特性,就算不用我这个产品,我的产品也照样卖” 一台手机上的功能,能被用户真正使用的功能是很少的一部分,有 20% 吗?就当有 20%,那么还…

2026/8/31 16:10:25