@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 初始化时被提前创建即启动时。

相关新闻

最新新闻

计算机毕业设计之基于大数据的抖音音乐播放数据分析可视化

计算机毕业设计之基于大数据的抖音音乐播放数据分析可视化

基于大数据的抖音音乐播放数据分析可视化利用海量数据资源为用户提供个性化音乐推荐的服务平台。通过分析用户的听歌历史、喜好偏好、社交网络互动等多个维度数据,运用机器学习和数据挖掘技术,为用户提供精准、高效的音乐推荐。收集用户在抖音平台上的听…

2026/7/7 2:01:30
STM32 裸机 Blink 的坑 你确定你的向量表能跑起来

STM32 裸机 Blink 的坑 你确定你的向量表能跑起来

一句话:从零写一个 STM32F103 的裸机 Blink 很简单,但 binary 里的向量表字节顺序错了,你的芯片根本不会跑。 前言 很多嵌入式开发入门都是从 HAL 库或者标准外设库开始的 —— 点个灯,调个时钟,看个寄存器。这些都没问题,但如果你像我一样曾经好奇过"不用库,纯裸…

2026/7/7 2:01:30
Agent 工程化新底座:用 CLI 契约层打通 HTTP 接口与业务能力

Agent 工程化新底座:用 CLI 契约层打通 HTTP 接口与业务能力

变化分层:Agent 基建应该压在哪一层如果把 AI 应用的技术栈按变化速度拆开,会发现它不是一条直线,而是一组稳定性差异很大的层。图:越往底层越适合承载长期业务契约。模型和 Agent 框架适合快速试错,不适合作为业务基础…

2026/7/7 2:01:30
研发工程师现场演算:Pixel2Geo 像素转三维坐标核心数学模型

研发工程师现场演算:Pixel2Geo 像素转三维坐标核心数学模型

研发工程师现场演算:Pixel2Geo 像素转三维坐标核心数学模型 前置说明 Pixel2Geo™ 为镜像视界自研纯视觉无源定位核心演算引擎,依托多视几何联立方程组实现二维图像像素(u,v)→CGCS2000大地三维坐标\boldsymbol{P}(X,Y,Z) 刚性映射,全程不…

2026/7/7 2:01:30
UltraStar Deluxe:完全免费的开源卡拉OK唱歌游戏入门指南

UltraStar Deluxe:完全免费的开源卡拉OK唱歌游戏入门指南

UltraStar Deluxe:完全免费的开源卡拉OK唱歌游戏入门指南 【免费下载链接】USDX The free and open source karaoke singing game UltraStar Deluxe, inspired by Sony SingStar™ 项目地址: https://gitcode.com/gh_mirrors/us/USDX UltraStar Deluxe是一款…

2026/7/7 2:01:30
UL 1069-2024新版护士呼叫设备安全标准,这些技术更新必须吃透

UL 1069-2024新版护士呼叫设备安全标准,这些技术更新必须吃透

重磅解读|UL 1069-2024新版护士呼叫设备安全标准,这些技术更新必须吃透 在医疗建筑智能化、医护设备数字化高速迭代的当下,护士呼叫系统(NCS)作为医院医患沟通、应急救助的核心基础设施,其安全可靠性、兼容…

2026/7/7 1:56:30

月新闻