Spring 的 Ioc配置
HappyComponent.java
package com.atguigu.Ioc_01;public class HappyComponent {// 默认包含无参的构造方法public void dowork(){System.out.println("HappyComponent.dowork");}
}
ClientService.java
package com.atguigu.Ioc_01;静态工厂类
public class ClientService {private static ClientService clientService = new ClientService();private ClientService() {}public static ClientService clientService() {return clientService;}
}
ClientServiceImpl.java
package com.atguigu.Ioc_01;public class ClientServiceImpl {
}
DefaultServiceLocator.java
package com.atguigu.Ioc_01;非静态工厂类
public class DefaultServiceLocator {public static ClientServiceImpl clientService = new ClientServiceImpl();public ClientServiceImpl createClientServiceInstance() {return clientService;}
}
resources目录下的 .xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">1、可以使用无参构造函数实例化的组件,如何进行Ioc配置呢?<bean - 一个组件信息(一个组件对象)id:组件的标识,唯一class:组件的类的权限定符配置了两个组件happyComponent1 和 happyComponent2,它们的类型都是com.atguigu.Ioc_01.HappyComponent,Spring容器会使用无参构造函数来创建这两个组件的实例,并将它们存储在IoC容器中,因为,默认是单例模式(singleton),即使声明了两次,Spring容器也只会创建一个HappyComponent的实例,但会为这两个bean引用提供相同的实例。当你从容器中获取这两个bean的引用时:HappyComponent happyComponent1 = context.getBean("happyComponent1", HappyComponent.class);HappyComponent happyComponent2 = context.getBean("happyComponent2", HappyComponent.class);happyComponent1、happyComponent2这两个引用实际上是指向同一个HappyComponent对象的,即它们的地址(内存中的引用)是相同的,这就是单例作用域的含义。<bean id="happyComponent1" class="com.atguigu.Ioc_01.HappyComponent" /><bean id="happyComponent2" class="com.atguigu.Ioc_01.HappyComponent" />2、静态工厂类,如何声明工厂方法进行Ioc配置?id = "组件的标识"class ="工厂类的权限定符"factory-method = "静态工厂方法"下面这个bean,意思是:调用“com.atguigu.Ioc_01.ClientService”这个工厂类的“clientService”方法,将它造出的组件对象,存储到Ioc容器,叫clientService(id等于的那个值)配置了一个名为clientService的组件,它并不直接通过类的构造函数来实例化,而是,通过调用com.atguigu.Ioc_01.ClientService类的静态方法clientService来创建实例,factory-method属性用于指定用于创建组件实例的静态工厂方法。<bean id="clientService" class="com.atguigu.Ioc_01.ClientService" factory-method="clientService" />3、非静态工厂,如何声明Ioc配置?配置了一个非静态工厂defaultServiceLocator,它本身也是一个bean,由Spring容器管理,然后,通过factory-bean属性指定了非静态工厂bean的id,并且,通过factory-method属性指定了用于创建组件实例的非静态工厂方法createClientServiceInstance,所以,Spring容器会首先创建defaultServiceLocator的实例,然后调用其createClientServiceInstance方法来创建clientService2组件的实例步骤1、配置工厂类的组件信息<bean id="defaultServiceLocator" class="com.atguigu.Ioc_01.DefaultServiceLocator" />步骤2、通过指定非静态工厂对象和方法名,来配置生成Ioc信息也就是:根据工厂对象的实例工厂方法,进行实例化组件对象。<bean id="clientService2" factory-bean="defaultServiceLocator" factory-method="createClientServiceInstance" /></beans>相关文章:
Spring 的 Ioc配置
HappyComponent.java package com.atguigu.Ioc_01;public class HappyComponent {// 默认包含无参的构造方法public void dowork(){System.out.println("HappyComponent.dowork");} }ClientService.java package com.atguigu.Ioc_01;静态工厂类 public class Clien…...
基于Java-SpringBoot+vue实现的前后端分离信息管理系统设计和实现
基于Java-SpringBootvue实现的前后端分离信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…...
用Python实现办公自动化(自动化处理PDF文件)
自动化处理 PDF 文件 目录 自动化处理 PDF 文件 谷歌浏览器 Chrome与浏览器驱动ChromeDriver安装 (一)批量下载 PDF 文件 1.使用Selenium模块爬取多页内容 2.使用Selenium模块下载PDF文件 3.使用urllib模块来进行网页的下载和保存 4.使用urllib…...
银河麒麟操作系统Kylin Linux 离线安装Nginx1.21.5
一、查看操作系统版本号 nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.15.v2207.ky10.x86_64Build: Kylin Linux Advanced Server release V10 (SP3) /(Lance)-x86_64-Build20/…...
ApiFox 使用教程
ApiFox 使用教程 目录概述需求: 设计思路实现思路分析1.基本使用教程(Apifox 使用 Postman)Apifox 下使用 mockapifox 下 swaggerApifox 下使用 Jmeter 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show…...
github拉取的项目添加至自己的仓库
想把GitHub的开源项目拉到本地进行二开,研究了一下上传到gitee的步骤: 步骤 gitee新建仓库,仓库名与本地文件夹的名称一致,建好后gitee的页面也会有显示git命令 打开项目目录,右键打开git bash(或者在gi…...
ZooKeeper 的持久化机制
持久化的定义: 数据,存到磁盘或者文件当中。机器重启后,数据不会丢失。内存 -> 磁盘的映射,和序列化有些像。 ZooKeeper 的持久化: SnapShot 快照,记录内存中的全量数据TxnLog 增量事务日志ÿ…...
VS2022+QT5.9 提示找不到qtmain.lib
从VS2013QT的项目切换到VS2022QT5.9,安装好mscv2017版本的QT5.9,项目工程选择QT project settings中的Qt Installation为mscv2017版本的QT5.9,编译好提示找不到qtmain.lib 解决思路: 提示找到xxxx.lib,第一库目录不对…...
HTTP和HTTPS谁传输数据更安全?
1.HTTP HTTP在传输数据时,通常都是明文传输,也就是传输的数据没有进行加密。在这种情况下,如果传输的是一些敏感数据,比如某银行卡密码,就很容易被别人截获到,这就对我们的个人利益产生了威胁。 HTTP传输数…...
竞赛常考的知识点大总结(七)图论
最短路 最短路问题(Shortest Path Problem)是图论中的一个经典问题,它要求在给定的图中找到两个顶点之间的最短路径。最短路问题可以是单源最短路问题(从一个顶点到其他所有顶点的最短路径)或所有对最短路问题&#x…...
NOSQL - Redis的简介、安装、配置和简单操作
目录 一. 知识了解 1. 关系型数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 区别 1.4 非关系型数据库产生背景 1.5 NOSQL 与 SQL的数据记录对比 2. 缓存相关知识 2.1 缓存概念 2.2 系统缓存 2.3 缓存保存位置及分层结构 二 . redis 相关知识 1.…...
书生·浦语大模型开源体系(二)笔记
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...
docker-compse安装es(包括IK分词器扩展)、kibana、libreoffice
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。 Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据…...
Electron 读取本地配置 增加缩放功能(ctrl+scroll)
最近,一个之前做的electron桌面应用,需要增加两个功能;第一是读取本地的配置文件,然后记载配置文件中的ip地址;第二就是增加缩放功能; 第一,配置本地文件 首先需要在vue工程根目录中࿰…...
docker中配置交互式的JupyterLab环境的问题
【报错1】 Could not determine jupyter lab build status without nodejs 【解决措施】安装nodejs(利用conda进行安装/从官网下载进行安装) 1、conda安装 conda install -c anaconda nodejs 安装后出现其他报错:Please install nodejs 5 and npm bef…...
SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值
在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时,你可以结合 SQLAlchemy 的 func 模块来实现 SQL 函数的调用,比如 JSON_EXTRACT,并使用 group_by 和 count 方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步…...
HTTPS ECDHE 握手解析(计算机网络)
使用了 ECDHE,在 TLS 第四次握手前,客户端就已经发送了加密的 HTTP 数据,而对于 RSA 握手过程,必须要完成 TLS 四次握手,才能传输应用数据。 所以,ECDHE 相比 RSA 握手过程省去了一个消息往返的时间&#…...
在git上先新建仓库-把本地文件提交远程
一.在git新建远程项目库 1.选择新建仓库 以下以gitee为例 2.输入仓库名称,点击创建 这个可以选择仓库私有化还公开权限 3.获取仓库clone链接 这里选择https模式就行,就不需要配置对电脑进行sshkey配置了。只是需要每次提交输入账号密码 二、远…...
Redis 过期删除策略
Redis 过期删除策略 Redis 过期删除策略主要包括两种:惰性删除(Lazy Expiration)和定期删除(Periodic Expiration)。这两种策略通常会配合使用,以在内存使用效率、CPU 资源消耗以及过期键清理的及时性之间…...
MySQL 锁合集与事务隔离级别
概览 在数据库管理中,锁是用来控制多个事务对同一数据的并发访问的机制。InnoDB作为MySQL的默认事务型存储引擎,提供了多种类型的锁来保障事务的隔离性并减少冲突,从而维护数据库的完整性和一致性。以下是InnoDB提供的主要锁类型:…...
扔掉KVM切换器!GitHub 25.7K Star的Deskflow:用一套键鼠无缝控制多台电脑的软件KVM方案
两台电脑两套键鼠,桌面杂乱、切换繁琐,硬件KVM切换器又贵得离谱?Deskflow 是一款开源跨平台的软件KVM方案,它允许用一套键鼠无缝穿梭于不同设备之间,让一台电脑的鼠标光标直接“穿越”到另一台电脑的屏幕上。本文将从技…...
DellFanManagement终极指南:如何彻底掌控戴尔笔记本风扇噪音与散热平衡
DellFanManagement终极指南:如何彻底掌控戴尔笔记本风扇噪音与散热平衡 【免费下载链接】DellFanManagement A suite of tools for managing the fans in many Dell laptops. 项目地址: https://gitcode.com/gh_mirrors/de/DellFanManagement 还在为戴尔笔记…...
免费抠图软件一键抠图无水印有哪些?2026年最全工具推荐
最近在小红书和抖音上,我看到很多人都在问同一个问题:有没有好用的免费抠图软件,一键抠图还无水印的?说实话,现在抠图工具确实多,但真正好用的、免费的、还无水印的,选择反而没那么多。我自己用…...
Kicad 5.99版本下,这4个插件让PCB设计效率翻倍(附保姆级安装教程)
KiCad 5.99版本效率革命:4款必备插件全解析与实战指南 刚接触KiCad的工程师常会遇到这样的困境:手动布线耗时费力、生产文件导出步骤繁琐、BOM表整理令人头疼。这些问题在中小型项目中尤为明显,往往让设计周期延长30%以上。而KiCad 5.99版本作…...
iMeta | 伦敦国王学院量化系统生物学组-解析肝硬化中口腔-肠道转移细菌与宿主互作
点击蓝字 关注我们整合宿主–微生物组建模揭示了口腔–肠道微生物转移在晚期肝硬化中的潜在作用iMeta主页:http://www.imeta.science研究论文● 期刊: iMeta (IF 33.2,中科院双一区Top)● 英文题目: Integrative host-microbiome modelling uncovers the implicatio…...
WzComparerR2:如何零基础提取冒险岛游戏资源?终极免费工具完整指南
WzComparerR2:如何零基础提取冒险岛游戏资源?终极免费工具完整指南 【免费下载链接】WzComparerR2 Maplestory online Extractor 项目地址: https://gitcode.com/gh_mirrors/wz/WzComparerR2 想要探索冒险岛游戏背后的奥秘吗?WzCompar…...
别再猜了!手把手教你识别并解码家里那些“身份不明”的红外遥控器(NEC/RC5/RC6初步判断)
红外遥控器协议侦探指南:快速识别NEC/RC5/RC6编码 家里积攒的旧遥控器越来越多,每个按键背后究竟藏着什么秘密?当你试图用智能家居系统整合这些设备时,第一步往往不是学习信号,而是破解这些"黑盒子"的通信语…...
从零搭建CFD-DEM耦合环境:OpenFOAM与PFC3D在WSL2下的实战部署指南
1. 环境准备:WSL2与Ubuntu基础配置 第一次接触CFD-DEM耦合仿真的同学,建议从Windows系统起步。微软的WSL2(Windows Subsystem for Linux)现在已经能完美支持Ubuntu环境,实测比虚拟机流畅得多。我去年在联想小新Pro16上…...
基于RAG的德国开放数据智能问答助手:从原理到工程实践
1. 项目概述:当德国开放数据遇上GPT最近在折腾一个挺有意思的项目,叫 OpenDataGermanyGPT。光看名字,你可能觉得这又是一个“GPT套壳”应用,但实际玩下来,我发现它的核心价值远不止于此。简单来说,这是一个…...
HFSS新手避坑指南:手把手教你仿真带孔金属箱的屏蔽效能(附模型文件)
HFSS新手避坑指南:手把手教你仿真带孔金属箱的屏蔽效能 第一次打开HFSS时,那种面对复杂界面的茫然感我至今记忆犹新。作为电磁仿真领域的标杆工具,HFSS的强大功能背后是陡峭的学习曲线。特别是当老板突然扔给你一个带孔金属箱的屏蔽效能评估任…...
