当前位置: 首页 > 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注入

相关文章:

Spring的构造注入

1.开发步骤2.构造方法的重载 2.1参数个数不同2.2构造参数个数相同时 3.注入总结 注入&#xff1a;通过Spring的配置文件&#xff0c;为成员变量赋值 Set注入&#xff1a;Spring调用Set方法&#xff0c;通过配置文件&#xff0c;为成员变量赋值 构造注入&#xff1a;Spring调用…...

服务器IPMI用户名、密码批量检查

背景 大规模服务器部署的时候&#xff0c;少不了较多的网管和监测平台&#xff0c;这些平台会去监控服务器的性能、硬件等指标参数&#xff0c;为了便于管理和控制&#xff0c;则需要给服务器IPMI带外管理添加较多的用户&#xff0c;这就需要对较多的服务器检查所对应的IPMI用…...

管理后台环境配置

后端配置及启动 a. 软件安装 1. Java sdk 1.8 2. maven 3.6 3. intellij IDEA 2024 4. Visual C Redistributable 5. mongodb 7.0 6. mysql 8.0 双击安装&#xff1a;mysql-installer-community-8.0.41.0.msi 版本选择&#xff1a;Full&#xff0c;包括服务器和客户端 …...

element-ui infiniteScroll 组件源码分享

简单分享 infiniteScroll 组件源码&#xff0c;主要有以下四个方面&#xff1a; 1、infiniteScroll 页面结构。 2、infiniteScroll 组件属性。 3、组件内部的方法。 4、存在的问题。 一、infiniteScroll 页面结构&#xff1a; 二、页面属性。 2.1 infinite-scroll-disab…...

Pany-v2:LFI漏洞探测与敏感文件(私钥窃取/其他)自动探测工具

地址:https://github.com/MartinxMax/pany 关于Pany-v2 Pany-v2 是一款 LFI&#xff08;本地文件包含&#xff09;漏洞探测工具&#xff0c;具备自动识别敏感文件的能力。它能够利用 LFI 漏洞检测并提取 id_rsa 私钥、系统密码文件以及其他可能导致安全风险的敏感信息。该工具…...

供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)

供应链管理系统--升鲜宝门店收银系统功能解析&#xff0c;登录、主界面 会员 UI 设计图&#xff08;一&#xff09;...

Day11,Hot100(贪心算法)

贪心 &#xff08;1&#xff09;121. 买卖股票的最佳时机 第 i 天卖出的最大利润&#xff0c;即在前面最低价的时候买入 class Solution:def maxProfit(self, prices: List[int]) -> int:min_price prices[0]ans 0for price in prices:ans max(ans, price - min_price…...

nss刷题4

[SWPUCTF 2023 秋季新生赛]Pingpingping 看看源码&#xff0c;首先是get传参Ping_ip.exe,然后如果请求了_ping参数&#xff0c;就会执行ping命令&#xff0c;执行三次 <?php highlight_file(__FILE__); error_reporting(0); $_ping $_GET[Ping_ip.exe]; if(isset($_ping…...

Eclipse 编译项目指南

Eclipse 编译项目指南 引言 Eclipse 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛用于Java、C/C、Python等多种编程语言的开发。在Eclipse中编译项目是进行软件开发的基础步骤。本文将详细介绍如何在Eclipse中编译项目&#xff0c;包括项目设置…...

天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库

天佐.乾坤袋 天佐.乾坤袋 简介 天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库&#xff0c;可用于文件打包&#xff0c;数据整合&#xff0c;加密存放等多种用途。可以方便快捷的搭建和部署存储应用的系统。 传说: 弥勒所有&#xff0c;专做储物之用。拥有不可思议之力&#x…...

win11编译pytorch cuda128版本流程

Geforce 50xx系显卡最低支持cuda128&#xff0c;torch cu128 release版本目前还没有释放&#xff0c;所以自己基于2.6.0源码自己编译wheel包。 1. 前置条件 1. 使用visual studio installer 安装visual studio 2022&#xff0c;工作负荷选择【使用c的桌面开发】,安装完成后将…...

Windows 11 下正确安装 Docker Desktop 到 D 盘的完整教程

文章目录 Windows 11 在 D 盘正确安装 Docker Desktop 的完整教程**前言****准备工作****1. 手动创建 Docker 相关目录**&#xff08;⚠️ **这一步非常重要**&#xff0c;否则会报错&#xff09;**2. 下载 Docker Desktop 安装程序****3. 使用管理员权限打开终端** **安装 Doc…...

IDEA - 查看类的继承结构(通过快捷键查看、通过生成类图查看)

一、通过快捷键查看 在项目中定位到目标类&#xff08;例如&#xff0c;Executor.java&#xff09; 按下快捷键 【Ctrl H】 此时会弹出 Type Hierarchy 窗口&#xff0c;展示所有相关的父类、子类、接口 二、通过生成类图查看 在项目中定位到目标类&#xff08;例如&#x…...

Vue 3指令全解析:内置指令与自定义指令实战指南

Vue指令是模板语法的核心武器&#xff0c;它们以v-前缀的形式为HTML元素添加特殊功能。本文将深入探讨Vue 3中的指令系统&#xff0c;覆盖10个核心指令的妙用&#xff0c;并手把手教你打造专属自定义指令。 一、Vue指令基础认知 指令本质上是DOM操作的语法糖&#xff0c;它们&…...

Springboot 自动化装配的原理

Springboot 自动化装配的原理 SpringBoot 主要作用为&#xff1a;起步依赖、自动装配。而为了实现这种功能&#xff0c;SpringBoot 底层主要使用了 SpringBootApplication 注解。 首先&#xff0c;SpringBootApplication 是一个复合注解&#xff0c;它结合了 Configuration、…...

Linux——进程池

前言&#xff1a;大佬写博客给别人看&#xff0c;菜鸟写博客给自己看&#xff0c;我是菜鸟。 1.实现思路 思路&#xff1a;通过创建匿名管道&#xff0c;来实现父子进程之间的通信 注1&#xff1a;父写&#xff0c;子读 注2&#xff1a;匿名管道只能用来进行具有血管关系的进程…...

Qt基于等待条件QWaitCondition实现的任务队列模型示例

核心概念 Qt中的QWaitCondition是一个用于多线程同步的类&#xff0c;允许线程在某些条件满足时唤醒其他等待的线程。它通常与QMutex配合使用&#xff0c;协调线程之间的执行顺序&#xff0c;适用于生产者-消费者模型、任务队列调度等场景。 ​wait()&#xff1a;使当前线程进…...

微服务即时通信系统---(六)语音识别子服务

目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程思想 服务代码实现 编写proto文件 服务端创建子类(SpeechRecognitionServiceImpl)完成RPC服务调用函数重写 SpeechRecognize(语音识别) 服务端完成语音识别子服务类(SpeechRecognitionServer) 注意 …...

JavaWeb基础专项复习5——请求对象和响应对象request and response

系列文章目录 1、JavaWeb基础专项复习1——XML文件-CSDN博客 2、JavaWeb基础专项复习2——JSP文件-CSDN博客 3、JavaWeb基础专项复习2——Servlet相关知识-CSDN博客 4、JavaWeb基础专项复习4——会话对象Session and Cookie-CSDN博客 文章目录 系列文章目录文章目录1、Tom…...

mac下载MAMP6.8.1;解决mac使用小皮面板安装php7.4

因为mac的小皮面板没有php7.4了 链接&#xff1a;c9cc270e6961c17c.dmg官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 鹅选一 附上大佬写的教程&#xff1a;MAMP PRO教程 - 牛奔 - 博客园 更新一下&#xff0c;2-27 昨天已经可以使用php7.4了&#xff0c;我就在想能…...

书匠策AI毕业论文功能到底有多离谱?科普博主亲测后整个人都愣住了

各位被毕业论文折磨到怀疑人生的同学&#xff0c;我是你们的论文科普老朋友。 今天不讲文献怎么读、不讲选题怎么选&#xff0c;咱们换个画风——我花了整整一周&#xff0c;把书匠策AI&#xff08;h 官网直达&#xff1a;www.shujiangce.com微信搜一搜"书匠策AI"&a…...

Frida CLR绑定:.NET动态插桩与运行时可观测性实战

1. 这不是“给.NET加个Hook”&#xff0c;而是让CLR自己开口说话很多人第一次听说“Frida CLR绑定”&#xff0c;下意识反应是&#xff1a;“哦&#xff0c;又一个在.NET程序里打补丁的工具&#xff1f;”——这理解偏差得有点远。它根本不是在应用层API上做拦截&#xff0c;也…...

SVM调参实战:如何用Python的sklearn找到鸢尾花分类的最佳C值和核函数?

SVM超参数优化实战&#xff1a;从网格搜索到贝叶斯优化的鸢尾花分类调参指南当你在sklearn中第一次使用SVC分类器时&#xff0c;是否曾被默认参数C1.0和kernellinear的表现所困惑&#xff1f;为什么同样的算法在不同数据集上表现差异巨大&#xff1f;本文将带你深入SVM调参的核…...

HS2-HF_Patch:终极汉化与优化补丁完全指南

HS2-HF_Patch&#xff1a;终极汉化与优化补丁完全指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日语界面烦恼吗&#xff1f;HS2-H…...

Windows右键菜单终极优化:ContextMenuManager完全掌控指南

Windows右键菜单终极优化&#xff1a;ContextMenuManager完全掌控指南 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是日常操作中使用最频繁的…...

构建多智能体系统时如何通过统一网关管理不同模型的调用与鉴权

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 构建多智能体系统时如何通过统一网关管理不同模型的调用与鉴权 在开发集成多个AI智能体的复杂系统时&#xff0c;工程师常常面临一…...

Diablo Edit2:暗黑破坏神II全版本角色存档编辑器终极指南

Diablo Edit2&#xff1a;暗黑破坏神II全版本角色存档编辑器终极指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否厌倦了在暗黑破坏神II中花费数百小时刷装备&#xff1f;是否想要尝试各…...

Unity中Newtonsoft.Json三种安装方式深度对比

1. 为什么Unity项目里装个Json库要纠结三天&#xff1f;——从一次崩溃说起Newtonsoft.Json&#xff0c;也就是大家常说的Json.NET&#xff0c;在C#生态里几乎是序列化的代名词。但放到Unity里&#xff0c;它却是个“熟悉的陌生人”&#xff1a;你写惯了JsonConvert.SerializeO…...

3步解决微信网页版访问限制:企业环境下的浏览器插件方案

3步解决微信网页版访问限制&#xff1a;企业环境下的浏览器插件方案 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为工作电脑无法安装微信客户端…...

神经符号系统实践:耦合机器学习与本体论提升机器人自主诊断能力

1. 项目概述&#xff1a;当机器学习遇见本体论 在机器人圈子里摸爬滚打十几年&#xff0c;我见过太多“聪明”但“不可靠”的自主系统。它们能精准识别物体、规划路径&#xff0c;但一旦遇到训练数据之外的场景&#xff0c;或者传感器出现一点小毛病&#xff0c;行为就可能变得…...