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

依赖注入的注解

在Spring中,依赖注入的注解主要有以下几种:

  1. 构造器注入相关:
    @Autowired  // 最常用的构造器注入注解@Inject     // JSR-330标准注解,功能与@Autowired类似
  1. 字段注入相关:
    @Autowired  // 字段注入@Resource   // JSR-250标准注解,按名称注入@Inject     // JSR-330标准注解,按类型注入@Value      // 用于注入基本类型和String类型的值
  1. Setter方法注入相关:
    @Autowired  // setter方法注入@Resource   // setter方法注入@Inject     // setter方法注入
  1. 特殊用途的注入注解:
    @Qualifier  // 配合@Autowired使用,指定具体的Bean@Primary    // 当有多个同类型Bean时,优先使用被@Primary标记的@Lazy       // 延迟注入,只有在第一次使用时才创建Bean
  1. 条件注入相关:
    @ConditionalOnBean      // 当存在某个Bean时才注入@ConditionalOnMissingBean  // 当不存在某个Bean时才注入@ConditionalOnProperty   // 根据配置属性决定是否注入
  1. Lombok提供的简化注入:
    @RequiredArgsConstructor  // 自动生成包含final字段的构造器@AllArgsConstructor      // 自动生成包含所有字段的构造器

使用示例:

@Componentpublic class Example {// 1. 构造器注入@Autowiredpublic Example(ServiceA serviceA, ServiceB serviceB) {this.serviceA = serviceA;this.serviceB = serviceB;}// 2. 字段注入@Autowiredprivate ServiceA serviceA;@Resource(name = "serviceB")private ServiceB serviceB;@Value("${app.name}")private String appName;// 3. Setter注入@Autowiredpublic void setServiceA(ServiceA serviceA) {this.serviceA = serviceA;}// 4. 使用@Qualifier指定具体Bean@Autowired@Qualifier("specificService")private Service specificService;}

最佳实践建议:

  1. 优先使用构造器注入
  1. 避免使用字段注入
  1. 使用 @RequiredArgsConstructor 简化构造器注入
  1. 需要按名称注入时使用 @Resource
  1. 需要注入配置值时使用 @Value
  1. 有多个同类型Bean时使用 @Qualifier 或 @Primary
http://www.lqws.cn/news/125425.html

相关文章:

  • IDEA中微服务指定端口启动
  • 每日Prompt:每天上班的状态
  • 【android bluetooth 协议分析 12】【A2DP详解 2】【开启ble扫描-蓝牙音乐卡顿分析】
  • 在 Android 框架中,接口的可见性规则
  • 解决Java项目NoProviderFoundException报错
  • 代码随想录 算法训练 Day22:回溯算法part01
  • 07 APP 自动化- appium+pytest+allure框架封装
  • java31
  • Vue.js教学第十九章:Vue 工具与调试,Vue DevTools 的使用与 VS Code 插件辅助开发
  • 匀速旋转动画的终极对决:requestAnimationFrame vs CSS Animation
  • AI在网络安全领域的应用现状和实践
  • unix/linux,sudo,其发展历程详细时间线、由来、历史背景
  • 《PyTorch:开启深度学习新世界的魔法之门》
  • 使用 React Native 开发鸿蒙(HarmonyOS)运动健康类应用的系统化准备工作
  • DrissionPage调试工具:网页自动化与数据采集的革新利器
  • AI自动化任务执行工具OpenManus一键启动整合包
  • unix/linux,sudo,其历史争议、兼容性、生态、未来展望
  • @Prometheus 监控-MySQL (Mysqld Exporter)
  • 第四十二天打卡
  • 深度学习之路——CNN卷积神经网络详解
  • Asp.net Core 通过依赖注入的方式获取用户
  • Facebook接入说明
  • CentOS 7 修改为静态 IP 地址完整指南
  • sql入门语句-案例
  • .NET 9中的异常处理性能提升分析:为什么过去慢,未来快
  • .Net Framework 4/C# 集合和索引器
  • PocketFlow 快速入门指南
  • .NET 原生驾驭 AI 新基建实战系列(三):Chroma ── 轻松构建智能应用的向量数据库
  • 【openssl】升级为3.3.1,避免安全漏洞
  • SSL安全证书怎么安装?