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

SSM框架——注入类型

 引用类型的注入:Setter方法

 简单类型的注入:

定义简单实例和方法

在配置文件中对bean进行配置,使用porperty属性 值用value(ref是用来获取bean的)

构造器方法:

构造器方法中需要写name,这样程序就会耦合度高。

使用type="java.lang.string"替换掉名称,可以解决形参名称耦合度高问题

使用index=0 索引值,当参数中有类型相同的,它可以解决参数相同问题。

总结:

Setter注入:Setter注入通过类的Setter方法(即属性设置方法)注入依赖对象。
  • 灵活性高:可以在对象创建后动态修改依赖,适用于可选依赖或可能变化的依赖项。
  • 代码可读性好:Setter方法通常具有明确的命名(如setService()),便于理解注入的内容。
  • 可能导致部分初始状态不完整:由于依赖在对象创建后设置,可能在对象初始化时某些依赖未准备好,导致运行时错误。
public class UserService {private UserRepository userRepository;// Setter方法注入public void setUserRepository(UserRepository userRepository) {this.userRepository = userRepository;}
}
构造器注入:构造器注入通过类的构造函数传入依赖对象,确保对象在创建时所有依赖已就绪。
  • 强依赖性保证:对象一旦创建,依赖关系即确定,避免运行时因依赖缺失导致的错误。
  • 适合强制依赖:适用于必须提供的依赖项,确保对象始终处于有效状态。
  • 不可变性支持:结合final关键字(如Java),可以保证依赖对象不可变,提高线程安全性。
  • 灵活性较低:一旦对象创建,依赖关系无法更改,不适合可选依赖或动态依赖场景。
public class UserService {private final UserRepository userRepository;// 构造器注入public UserService(UserRepository userRepository) {this.userRepository = userRepository;}
}

主要区别

特性Setter注入构造器注入
依赖时机对象创建后设置对象创建时设置
依赖可变性可动态修改通常不可变(如结合final
适用场景可选依赖、动态配置强制依赖、不可变对象
代码安全性可能因依赖缺失导致运行时错误编译时或创建时检查依赖完整性
框架支持广泛支持(如Spring的XML/注解)广泛支持(推荐现代框架默认使用)

选择建议

  • 优先构造器注入:现代框架(如Spring 4.3+)推荐默认使用构造器注入,因其更强的安全性和不可变性支持。
  • Setter注入适用场景:需要动态重新绑定依赖(如热部署)、可选依赖或遗留代码兼容时使用。

http://www.lryc.cn/news/593446.html

相关文章:

  • aws(学习笔记第四十九课) ECS集中练习(1)
  • Streamlit 官翻 5 - 部署、社区云 Deploy
  • Python绘制数据(三)
  • Matplotlib 30分钟精通
  • 人该怎样活着呢?55
  • Windows11下编译好的opencv4.8-mingw,可下载后直接用
  • Apache Kafka 学习笔记
  • 详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
  • Python高级数据类型:字典(Dictionary)
  • Datawhale 7月学习
  • RK3568 Linux驱动学习——SDK安装编译
  • Oracle为什么需要临时表?——让数据处理更灵活
  • DAY 18 推断聚类后簇的类型
  • 【Project】kafka+flume+davinci广告点击实时分析系统
  • MySQL(145)如何升级MySQL版本?
  • 在服务器(ECS)部署 MySQL 操作流程
  • 基于单片机宠物喂食器/智能宠物窝/智能饲养
  • 手撕Spring底层系列之:注解驱动的魔力与实现内幕
  • Spring AI 1.0版本 + 千问大模型之 文本记忆对话
  • 基于单片机病床呼叫系统/床位呼叫系统
  • C#操作WPS表格
  • 大模型军备竞赛升级!Grok 4 携 “多智能体内生化” 破局,重构 AI 算力与 Agent 2.0 时代
  • 张 关于大语言模型(LLM)置信度研究的经典与前沿论文 :温度缩放;语义熵;自一致性;事实与反思;检索增强;黑盒引导;
  • [MySQL基础3] 数据控制语言DCL和MySQL中的常用函数
  • 一个基于阿里云的C端Java服务的整体项目架构
  • 阿里云ssl证书自动安装及续订(acme)
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • LRU算法及优化
  • SpringBoot五分钟快速入门指南
  • Java行为型模式---访问者模式