当前位置: 首页 > backend >正文

Spring @Scope, @Lazy, @DependsOn, @Required, @Lookup

[Q&A] @Scope 引入背景
传统的 Spring 配置中,Bean 的作用域(如 singleton、prototype)只能通过 XML 配置定义,不够直观且与代码分离,提供一种基于注解的方式定义 Bean 的作用域。

[Q&A] @Lazy 引入背景
默认情况下,Spring 容器会在启动时加载所有单例 Bean,这可能导致启动慢、资源占用高,尤其是某些 Bean 并不总是被使用,引入@Lazy允许开发者延迟初始化 Bean,直到第一次被使用。

1、Spring容器在启动时会初始化所有的单例(singleton)Bean,而使用@Lazy后,Bean会在第一次被使用时才进行初始化。
2、用于@Component 类上(非 @Configuration类):该Bean将会被懒加载初始化。
3、用于@Configuration配置类上:该类中所有的@Bean方法都会受到影响,即这些Bean都将被懒加载。

[Q&A] @DependsOn 引入背景
Spring 默认采用自动装配机制,Bean 的初始化顺序通常由依赖关系决定。但在某些复杂场景下,需要显式控制 Bean 的初始化顺序。显式指定某些 Bean 必须在当前 Bean 之前初始化。

[Q&A] @Required 引入背景
早期 Spring 使用 setter 注入时,无法强制要求某个属性必须被注入,容易导致运行时空指针异常。标记某个属性必须被注入,否则抛出异常。

[Q&A] @Lookup 引入背景
在某些场景下,希望每次调用一个方法都能获取一个新的 Bean 实例(如 prototype 作用域 Bean),但直接 new 对象会破坏 Spring 的管理机制。支持从容器中动态获取 Bean,允许 Spring 动态决定返回哪个 Bean 实例。

注解用途是否支持作用域控制是否影响初始化顺序是否支持原型模式是否已弃用引入年份(关联 Spring 版本参考)
@Scope控制Bean作用域✔️✔️Spring 2.0+(约 2006-2007年)
@Lazy延迟初始化✔️(延迟加载)Spring 2.0+(约 2006-2007年)
@DependsOn强制依赖其他Bean✔️(控制顺序)Spring 2.0+(约 2006-2007年)
@Required标记必须注入的属性✔️(Spring 5+)Spring 2.0+(约 2006-2007年)
@Lookup动态获取Bean或覆盖方法实现✔️Spring 2.0+(约 2006-2007年)

典型用法

Spring @Scope 典型使用场景
Spring @Lazy 典型使用场景
Spring @DependsOn 典型使用场景
Spring @Required 典型使用场景
Spring @Lookup 典型使用场景

http://www.xdnf.cn/news/13473.html

相关文章:

  • 阿里云可观测 2025 年 5 月产品动态
  • 2506C++,C++时间库与C时间
  • java使用WebMagic架构写个分布式爬虫
  • React Vue 编译/运行流程
  • 入门Scikit-learn:让机器学习像呼吸一样自然!
  • thinkphp 一个系统在同一个域名下,一个文件夹下如何区分多站点——穷人的精致规划——仙盟创梦IDE
  • 开疆智能ModbusTCP转Canopen网关连接三菱FX5u配置案例
  • 解决idea创建SpringBoot项目,会自动创建.git文件导致commit两极分化的现象。
  • 软件测试之基于博客系统项目的功能测试
  • OpenAI推出o3-Pro模型
  • Weblogic 弱口令-任意文件读取
  • 【uniapp】小程序中input输入框的placeholder-class不生效
  • 【慧游鲁博】【11】后端 · Spring Boot 集成 Python 配置
  • 跨链/Layer2交易所架构:全链互操作与ZK-Rollup优化
  • 快速上手驭码CodeRider二
  • 【VBA】把目录及子目录下所有doc/docx转换为pdf格式
  • 【一文理解】下采样与上采样区别
  • DAY 27 函数专题2:装饰器
  • 3.2 组帧
  • 嵌入式学习笔记DAY35(数据库)
  • 少量数据达到更好效果
  • 跌穿20万辆,更猛烈的价格战却导致销量暴跌,难怪电车内讧了!
  • 基于OpenCV的滑动验证码缺口识别全流程解析(2025企业级方案)
  • 基于强化学习的智能调度系统:从理论到实践
  • VSomeip库- 编译使用
  • Dify-6: 部署
  • HTB 赛季8靶场 - TombWatcher
  • 制造业数智化转型:从行业痛点到R²AIN SUITE AI一体化解决方案
  • 算法题(166):占卜DIY
  • 打造多模态交互新范式|彩讯股份中标2025年中国移动和留言平台AI智能体研发项目