使用XML方式配置IOC

news/2024/4/16 14:33:16/文章来源:https://blog.csdn.net/Kaiser__/article/details/136514959

1. 创建实例对象的方式

我们在手动创建一个类的实例对象时,可以大致有以下几种方式:

  • 通过无参构造函数
  • 通过有参构造函数
  • 通过静态工厂方法
  • 通过实例(非静态)工厂方法

同理,在交由spring IOC创建实例对象也有以上几种方式,这里先总结了无参、静态工厂和实例工厂三种情况的XML配置文件书写方式。

2.基于无参构造函数

spring可以通过无参构造函数来创建一个bean(组件对象),我们只需要通过XML配置文件指定Bean类信息即可。

XML配置文件:

<bean id="empService" class="org.kkk.spring.ioc.EmpService"  />

注意:

  • id:组件的唯一标识,方便后期读取
  • class:组件类的全路径
  • 如果将同一个类声明两个组件信息,即写两个bean(id不同,class相同),会实例化两个组件对象

3. 基于静态工厂方法

例如,当前存在以下组件类:

public class ClientService {private static ClientService clientService = new ClientService();private ClientService() {}public static ClientService getInstance() {return clientService;}
}

现在若要通过IOC创建实例,那么配置文件如下:

<bean id="clientService"  class="org.kkk.spring.ioc.ClientService" factory-method="getInstance" />

注意:

  • id:组件的唯一标识
  • class:组件类的全类名
  • factory-method:静态工厂的静态方法名

4. 基于实例工厂方法

例如,当前存在以下组件类:

public class ClientServiceFactory {private static ClientService clientService = new ClientService();public ClientService getInstance() {return clientService;}
}

可以看到,当前类的getInstance方法与3不同,此处时非静态方法。那么,想要得到实例化对象clientService ,就只能先创建工厂实例,之后工厂实例对象再调用该非静态方法得到目标对象。

XML配置文件如下:

<!--1. 配置工厂类的组件信息  --><bean id="clientServiceFactory" class="org.kkk.spring.ioc.ClientServiceFactory" /><!--2. 通过指定非静态工厂对象和方法名 来配置生成的ioc信息  --><bean id="clientService" factory-bean="clientServiceFactory" factory-method="getInstance" />

注意:

  • id:组件的唯一标识
  • factory-bean:指定当前容器中工厂Bean 的名称
  • factory-method: 指定实例工厂的非静态方法名

可以看到,XML配置文件也输入了两个组件信息,与我们手动创建类似,需要首先创建工厂实例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_996582.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三讲 汇编初步 课程随手记

一、寄存器 32位CPU通用寄存器如下图所示&#xff1a; 因为教材依照的是32位CPU寄存器&#xff0c;而我安装的是64位寄存器&#xff0c;所以找了一下64位的寄存器的资料 PS&#xff1a;一般来说&#xff0c;Intel处理器字节存储顺序为小端法存储&#xff0c;是指数据的高字节保…

AIOps常见问题

AIOps的自动化通常指什么&#xff1f; AIOps 平台的自动化一般包括以下几个方面&#xff1a; 数据收集和整合&#xff1a;AIOps 平台可以从多个 IT 基础架构组件、应用需求与性能监视工具以及服务工单系统等数据源中收集并整合运维数据&#xff0c;形成一个全面的数据平台。数…

视频推拉流EasyDSS平台直播通道重连无法转推的原因排查与解决

视频推拉流EasyDSS视频直播点播平台&#xff0c;集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体&#xff0c;可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 用户使用EasyDSS平台对直播通道进行转推&#xff0c;发现只要关闭…

查看Linux特定用户组的所有用户

在Linux中查看属于特定用户组的所有用户的命令&#xff0c;可以使用以下几种方法&#xff1a; 通过 /etc/group 文件&#xff1a; 打开 /etc/group 文件并查找你想要查询的用户组&#xff0c;该文件每一行代表一个用户组及其成员。例如&#xff0c;要查看名为 developers 的用户…

matlab 感知器算法

1. 原理 两类线性可分的模式类&#xff1a;&#xff0c;设判别函数为&#xff1a;。 对样本进行规范化处理&#xff0c;即类样本全部乘以(-1)&#xff0c;则有&#xff1a; 感知器算法通过对已知类别的训练样本集的学习&#xff0c;寻找一个满足上式的权向量。 2. 过程 2.1 …

Apache Flink连载(三十七):Flink基于Kubernetes部署(7)-Kubernetes 集群搭建-3

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录

基于Springboot免费搭载轻量级阿里云OSS数据存储库(将本地文本、照片、视频、音频等上传云服务保存)

一、注册阿里云账户 打开https://www.aliyun.com/&#xff0c;申请阿里云账户并完成实名认证&#xff08;个人&#xff09;。这种情况就是完成了&#xff1a; 二、开通OSS服务 点击立即开通即可。 三、创建Bucket 申请id和secert&#xff1a; 进去创建一个Accesskey就会出现以…

“成像光谱遥感技术中的AI革命:ChatGPT应用指

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

指针的学习4

目录 回调函数 qsort使用样例 使用qsort函数排序整形数据 使用qsort函数排序结构体 回调函数 回调函数就是一个通过函数指针调用的函数。如果把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xf…

35 Spring整合Elasticsearch

文章目录 Spring整合Elasticsearch引入依赖配置Elasticsearch解决冲突 使用ElasticsearchSpring Data Elasticsearch建立映射关系常用方法添加数据修改数据删除数据搜索数据&#xff08;es核心&#xff09;步骤构造搜索条件 并 应用进行查询使用查询结果 Spring整合Elasticsear…

设计模式2--Abstract Factory Design Pattern In C++

1.AFDP&#xff08;抽象工厂设计模式&#xff09; AFDP 定义了一个抽象类来创建相关的家族对象但未指定其具体子类 2.基本原理图 3.为什么/何时使用AFDP 1.你需要系统独立于对象的创建、组合和表示方式。 2.显示接口而不是实现。 3.系统需要配置多个对象系列之一 4.UML图 5…

安卓部分手机使用webview加载链接后白屏(Android低版本会出现的问题)

前言 大爷&#xff1a;小伙我这手机怎么打开你们呢这个是白屏什么都不显示。 大娘&#xff1a;小伙我这也是打开你们呢这功能&#xff0c;就是一个白屏什么也没有&#xff0c;你们呢的应用不会有病毒吧。 小伙&#xff1a;我的手机也正常&#xff1b; 同事&#xff1a;我的也正…

Docker容器化解决方案(镜像,容器的操作管理)

Docker镜像管理 搜索官方仓库镜像 docker search [rootlocalhost ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL nginx Official build of Nginx. …

【位运算】【左右位移】Leetcode 2917. 找出数组中的 K-or 值

【位运算】【左右位移】Leetcode 2917. 找出数组中的 K-or 值 解法 位运算 ---------------&#x1f388;&#x1f388;题目链接 2917. 找出数组中的 K-or 值&#x1f388;&#x1f388;------------------- 【1】<<&#xff1a;左位移运算符 符号位不变&#xff0c;低…

网络编程的学习

思维导图 多路复用代码练习 select完成TCP并发服务器 #include<myhead.h> #define SER_IP "192.168.125.73" //服务器IP #define SER_PORT 8888 //服务器端口号int main(int argc, const char *argv[]) {//1、创建用于监听的套接字int sfd -1;s…

基于GPT-SoVITS少样本语音转换的实时交互TTS

项目地址&#xff1a;https://github.com/DLW3D/GPT-SoVITS 该项目基于 RVC-Boss/GPT-SoVITS-WebUI 前言 GPT-SoVITS-WebUI 实现了使用WebUI的简易小样本语音模拟和文本转语音所需的完整流程&#xff0c;包括数据清洗、文本标注、模型微调、文本转语音。 该项目是对 GPT-SoVI…

动态规划课堂3-----简单多状态问题(买卖股票最佳时机)

目录 引入&#xff1a; 例题1&#xff1a;按摩师&#xff08;打家劫舍I&#xff09; 例题2&#xff1a;打家劫舍II 例题3&#xff1a;删除并获得点数 例题4&#xff1a;粉刷房子 例题5&#xff1a;买卖股票的最佳时机含冷冻 结语&#xff1a; 引入&#xff1a; 相信看到…

uniapp+vue3+vites使用lime-echart问题记录

问题记录 1.vue3使用echarts,H5和微信小程序兼容问题 1.vue3使用echarts,H5和微信小程序兼容问题 问题描述&#xff0c;正常使用echarts&#xff0c;H5正常&#xff0c;小程序报错 报错信息如下 解决方案&#xff1a; 注意要点一&#xff1a;vue3需要使用esm文件 地址&#x…

在ubuntu上安装hadoop完分布式

准备工作 Xshell安装包 Xftp7安装包 虚拟机安装包 Ubuntu镜像源文件 Hadoop包 Java包 一、安装虚拟机 创建ubuntu系统 完成之后会弹出一个新的窗口 跑完之后会重启一下 按住首先用ctrlaltf3进入命令界面&#xff0c;输入root&#xff0c;密码登录管理员账号 按Esc 然后输入 …

解决/sys/kernel/debug/下没有任何文件的

问题&#xff1a; /sys/kernel/debug目录下没有任何信息 解决&#xff1a; 首先检查Debug Filesystem是否选中&#xff0c;其位置是&#xff1a; Kernel hacking -> Compile-time checks and compiler options -> Debug Filesystem 打开configs文件查看是否为y: arch/arm…