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

Spring的构造注入

  • 1.开发步骤
  • 2.构造方法的重载
    • 2.1参数个数不同
    • 2.2构造参数个数相同时
  • 3.注入总结

注入:通过Spring的配置文件,为成员变量赋值
Set注入:Spring调用Set方法,通过配置文件,为成员变量赋值
构造注入:Spring调用构造方法,通过配置文件,为成员变量赋值

1.开发步骤

  • 提供有参构造方法

    public class Customer implements Serializable {
    private String name;
    private int age;

    public Customer(String name, int age) {this.name = name;this.age = age;
    }@Override
    public String toString() {return "Customer{" +"name='" + name + ''' +", age=" + age +'}';
    }
    

    }

  • 通过Spring的配置文件来为成员变量赋值

    tom 1

一个构造参数,对应构造方法的一个构造参数,而且顺序是对应的
在这里插入图片描述

2.构造方法的重载

我们先来回顾一下什么是方法的重载

             1.在同一个类中2.方法名相同3.形参列表不同(个数,类型,顺序)4.方法的重载和返回值类型无关,和权限修饰符也无关

那么当构造方法发生重载的时候,我们想要构造注入为成员变量赋值需要注意什么细节呢?

2.1参数个数不同

public class Customer implements Serializable {private String name;private int age;public Customer(String name) {this.name = name;}public Customer(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Customer{" +"name='" + name + ''' +", age=" + age +'}';}
}

如果说,我们现在只想为name属性赋值的话,那么age就会有默认值

<bean id="customer" class="com.zyh.basic.Customer"><constructor-arg ><value>jack</value></constructor-arg></bean>

在这里插入图片描述

总结:我们可以发现当构造参数个数不同的时候,我们可以通过<constructor-arg >标签的数量来进行区分

2.2构造参数个数相同时

我们再来看看另外一种情况,当重载的构造方法中,有两个构造方法的参数都只有一个,那么Spring怎么知道我们要为哪一个成员变量赋值呢。这个时候我们就应该通过成员变量的类型来进行区分

通过标签引入type属性,进行类型区分
<bean id="customer" class="com.zyh.basic.Customer"><constructor-arg type="int" ><value>3</value></constructor-arg></bean>public class Customer implements Serializable {private String name;private int age;public Customer(String name) {this.name = name;}public Customer(int age) {this.age = age;}public Customer(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Customer{" +"name='" + name + ''' +", age=" + age +'}';}
}

type属性指明要赋值的参数类型

<bean id="customer" class="com.zyh.basic.Customer"><constructor-arg type="int" ><value>3</value></constructor-arg></bean>

在这里插入图片描述
这个时候,我们还会有一种疑惑,如果有两个成员变量的类型一样呢?
哈哈,大家想到这里肯定是有经过认真思考的,不过大家可能忘记了重载的定义,我们说重载指的是参数的个数,类型,顺序中有一个不同就构成了重载,但是注意,我们从来都没有说过,参数的名字不同构成重载,着就是语法报错,毕竟我们要记住,参数名是可以随便乱取的

3.注入总结

  • set注入用得比较多
  • 构造注入相对来说毕竟麻烦,毕竟有构造方法重载的问题
  • Spring框架中,大量应用了set注入
http://www.lryc.cn/news/544703.html

相关文章:

  • 服务器IPMI用户名、密码批量检查
  • 管理后台环境配置
  • element-ui infiniteScroll 组件源码分享
  • Pany-v2:LFI漏洞探测与敏感文件(私钥窃取/其他)自动探测工具
  • 供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)
  • Day11,Hot100(贪心算法)
  • nss刷题4
  • Eclipse 编译项目指南
  • 天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库
  • win11编译pytorch cuda128版本流程
  • Windows 11 下正确安装 Docker Desktop 到 D 盘的完整教程
  • IDEA - 查看类的继承结构(通过快捷键查看、通过生成类图查看)
  • Vue 3指令全解析:内置指令与自定义指令实战指南
  • Springboot 自动化装配的原理
  • Linux——进程池
  • Qt基于等待条件QWaitCondition实现的任务队列模型示例
  • 微服务即时通信系统---(六)语音识别子服务
  • JavaWeb基础专项复习5——请求对象和响应对象request and response
  • mac下载MAMP6.8.1;解决mac使用小皮面板安装php7.4
  • 大模型WebUI:Gradio全解12——LangChain原理、架构和组件(3)
  • redis --- 相关基础知识整理
  • 如何用 Python 进行机器学习
  • 《Effective Objective-C》阅读笔记(下)
  • 解释Promise的工作原理及其状态
  • SHELL32!ILCombine函数分析之连接两个idl
  • es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
  • Qt跨线程信号槽调用:为什么信号不能像普通函数那样调用
  • ollama和open-webui部署ds
  • 泛微Ecode新增Button调用服务器中的JSP页面里的方法
  • LVS+Keepalived高可用群集配置案例