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

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实现的前后端分离信息管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…...

用Python实现办公自动化(自动化处理PDF文件)

自动化处理 PDF 文件 目录 自动化处理 PDF 文件 谷歌浏览器 Chrome与浏览器驱动ChromeDriver安装 &#xff08;一&#xff09;批量下载 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 使用教程 目录概述需求&#xff1a; 设计思路实现思路分析1.基本使用教程&#xff08;Apifox 使用 Postman&#xff09;Apifox 下使用 mockapifox 下 swaggerApifox 下使用 Jmeter 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show…...

github拉取的项目添加至自己的仓库

想把GitHub的开源项目拉到本地进行二开&#xff0c;研究了一下上传到gitee的步骤&#xff1a; 步骤 gitee新建仓库&#xff0c;仓库名与本地文件夹的名称一致&#xff0c;建好后gitee的页面也会有显示git命令 打开项目目录&#xff0c;右键打开git bash&#xff08;或者在gi…...

ZooKeeper 的持久化机制

持久化的定义&#xff1a; 数据&#xff0c;存到磁盘或者文件当中。机器重启后&#xff0c;数据不会丢失。内存 -> 磁盘的映射&#xff0c;和序列化有些像。 ZooKeeper 的持久化&#xff1a; SnapShot 快照&#xff0c;记录内存中的全量数据TxnLog 增量事务日志&#xff…...

VS2022+QT5.9 提示找不到qtmain.lib

从VS2013QT的项目切换到VS2022QT5.9&#xff0c;安装好mscv2017版本的QT5.9&#xff0c;项目工程选择QT project settings中的Qt Installation为mscv2017版本的QT5.9&#xff0c;编译好提示找不到qtmain.lib 解决思路&#xff1a; 提示找到xxxx.lib&#xff0c;第一库目录不对…...

HTTP和HTTPS谁传输数据更安全?

1.HTTP HTTP在传输数据时&#xff0c;通常都是明文传输&#xff0c;也就是传输的数据没有进行加密。在这种情况下&#xff0c;如果传输的是一些敏感数据&#xff0c;比如某银行卡密码&#xff0c;就很容易被别人截获到&#xff0c;这就对我们的个人利益产生了威胁。 HTTP传输数…...

竞赛常考的知识点大总结(七)图论

最短路 最短路问题&#xff08;Shortest Path Problem&#xff09;是图论中的一个经典问题&#xff0c;它要求在给定的图中找到两个顶点之间的最短路径。最短路问题可以是单源最短路问题&#xff08;从一个顶点到其他所有顶点的最短路径&#xff09;或所有对最短路问题&#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.…...

书生·浦语大模型开源体系(二)笔记

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…...

docker-compse安装es(包括IK分词器扩展)、kibana、libreoffice

Kibana是一个开源的分析与可视化平台&#xff0c;设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。 Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等&#xff0c;直观的展示数据&#xff0c;从而达到高级的数据…...

Electron 读取本地配置 增加缩放功能(ctrl+scroll)

最近&#xff0c;一个之前做的electron桌面应用&#xff0c;需要增加两个功能&#xff1b;第一是读取本地的配置文件&#xff0c;然后记载配置文件中的ip地址&#xff1b;第二就是增加缩放功能&#xff1b; 第一&#xff0c;配置本地文件 首先需要在vue工程根目录中&#xff0…...

docker中配置交互式的JupyterLab环境的问题

【报错1】 Could not determine jupyter lab build status without nodejs 【解决措施】安装nodejs(利用conda进行安装/从官网下载进行安装&#xff09; 1、conda安装 conda install -c anaconda nodejs 安装后出现其他报错&#xff1a;Please install nodejs 5 and npm bef…...

SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值

在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时&#xff0c;你可以结合 SQLAlchemy 的 func 模块来实现 SQL 函数的调用&#xff0c;比如 JSON_EXTRACT&#xff0c;并使用 group_by 和 count 方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步…...

HTTPS ECDHE 握手解析(计算机网络)

使用了 ECDHE&#xff0c;在 TLS 第四次握手前&#xff0c;客户端就已经发送了加密的 HTTP 数据&#xff0c;而对于 RSA 握手过程&#xff0c;必须要完成 TLS 四次握手&#xff0c;才能传输应用数据。 所以&#xff0c;ECDHE 相比 RSA 握手过程省去了一个消息往返的时间&#…...

在git上先新建仓库-把本地文件提交远程

一.在git新建远程项目库 1.选择新建仓库 以下以gitee为例 2.输入仓库名称&#xff0c;点击创建 这个可以选择仓库私有化还公开权限 3.获取仓库clone链接 这里选择https模式就行&#xff0c;就不需要配置对电脑进行sshkey配置了。只是需要每次提交输入账号密码 二、远…...

Redis 过期删除策略

Redis 过期删除策略 Redis 过期删除策略主要包括两种&#xff1a;惰性删除&#xff08;Lazy Expiration&#xff09;和定期删除&#xff08;Periodic Expiration&#xff09;。这两种策略通常会配合使用&#xff0c;以在内存使用效率、CPU 资源消耗以及过期键清理的及时性之间…...

MySQL 锁合集与事务隔离级别

概览 在数据库管理中&#xff0c;锁是用来控制多个事务对同一数据的并发访问的机制。InnoDB作为MySQL的默认事务型存储引擎&#xff0c;提供了多种类型的锁来保障事务的隔离性并减少冲突&#xff0c;从而维护数据库的完整性和一致性。以下是InnoDB提供的主要锁类型&#xff1a…...

题解 -- 第六届蓝桥杯大赛软件赛决赛C/C++ 大学 C 组

https://www.lanqiao.cn/paper/ 1 . 分机号 模拟就行 : inline void solve(){int n 0 ;for(int a1;a<9;a){for(int b0;b<9;b){for(int c0;c<9;c){if(a>b && b>c){n ;}}}}cout << n << endl ; } 2 . 五星填数 直接调用全排列的库函数…...

Lua脚本的使用

一、使用lua脚本扣减单个商品的库存 SpringBootTest class LuaTests {AutowiredStringRedisTemplate stringRedisTemplate;Testvoid test3() {for (int i 1; i < 5; i) {stringRedisTemplate.opsForValue().set("product."i,String.valueOf(i));}}Testvoid test…...

hcia datacom课程学习(5):MAC地址与arp协议

1.MAC地址 1.1 含义与作用 &#xff08;1&#xff09;含义&#xff1a; mac地址也称物理地址&#xff0c;是网卡设备在数据链路层的地址&#xff0c;全世界每一块网卡的mac地址都是唯一的&#xff0c;出厂时烧录在网卡上不可更改 &#xff08;2&#xff09;作用&#xff1a…...

unbuntu mysql8.0新建用户及开启远程连接

MySQL更新到8.0以上版本后&#xff0c;在创建连接远程的用户的时候和之前5.x的版本有了很大的不同&#xff0c;不能使用原来同时创建用户和授权的命令。 以下是记录的MySQL8.0创建用户并授权的命令&#xff1a; 查看用户表&#xff1a; user mysql; select host,user,authen…...

Intel FPGA (1):线性序列机

Intel FPGA (1)&#xff1a;线性序列机 前提摘要 个人说明&#xff1a; 限于时间紧迫以及作者水平有限&#xff0c;本文错误、疏漏之处恐不在少数&#xff0c;恳请读者批评指正。意见请留言或者发送邮件至&#xff1a;“Email:noahpanzzzgmail.com”。本博客的工程文件均存放在…...

翻译: 硅谷软件工程师面试:准备所需的一切

没有人有时间去做成百上千道LeetCode题目&#xff0c;好消息是你实际上并不需要做那么多题目就能够在FAANG公司找到工作&#xff01; 我曾经在Grab工作&#xff0c;这是东南亚的一家共享出行公司&#xff0c;但我对工作感到沮丧&#xff0c;想要进入FAANG公司&#xff0c;但我…...

视频推拉流EasyDSS点播平台云端录像播放异常的问题排查与解决

视频推拉流EasyDSS视频直播点播平台可提供一站式的视频转码、点播、直播、视频推拉流、播放H.265视频等服务&#xff0c;搭配RTMP高清摄像头使用&#xff0c;可将无人机设备的实时流推送到平台上&#xff0c;实现无人机视频推流直播、巡检等应用。 有用户反馈&#xff0c;项目现…...

kubuntu23.10安装sdl2及附加库和 sfml2.5.1

2024年3月28号&#xff0c;四&#xff0c;晚上kubuntu23.10下安装了sdl2的如下&#xff0c;没有安装gfx。 sudo apt install libsdl2-dev sudo apt install libsdl2-image-dev sudo apt install libsdl2-ttf-dev sudo apt install libsdl2-mixer-dev sudo apt install libsdl2…...

Centos JDK1.8 下载安装

https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 一 RPM包安装 rpm -ivh jdk-8u391-linux-x64.rpm /etc/profile export JAVA_HOME/usr/java/jdk1.8.0-x64 export PATH$JAVA_HOME/bin:$PATHsource /etc/profile二 tar.gz 包手动…...

iOS开发进阶(十四):xcodebuild 命令应用详解

文章目录 一、前言二、xcodebuild 命令汇总三、xcodebuild 可选命令四、exportOptionsPlist文件内容配置说明五、项目实操六、拓展阅读 一、前言 关于iOS组包&#xff0c;详参博文《ReactNative进阶&#xff08;三十四&#xff09;&#xff1a;Jenkins 流水线 组包 iOS 应用包…...

济南营销网站制作/网站排名优化+o+m

用心爱孩子|专业做教育为切实抓好园所的教育教学工作&#xff0c;通过教师公开课&#xff0c;组织教师进行观摩学习&#xff0c;开展教学经验交流&#xff0c;充分发挥教师的专业引领作用及教师之间的“传、帮、带”作用&#xff0c;让广大教师互通有无&#xff0c;取长补短&am…...

企业免费网站/怎么简单制作一个网页

1、靠&#xff01;不服&#xff01;2、不搞了不搞了&#xff01;3、……我跟你说&#xff01;4、我打死你&#xff01;5、鸟人&#xff01;6、无聊&#xff01;7、干嘛&#xff01;8、不可能&#xff01;9、我拍死你&#xff01;10、你滚啊&#xff01;11、谁稀罕啊&#xff01…...

九江的网站建设公司/关键词网站排名软件

一维对流方程 ∂u∂tc∂u∂x0\frac{\partial u}{\partial t}c\frac{\partial u}{\partial x}0∂t∂u​c∂x∂u​0&#xff0c;取c1c1c1&#xff0c;现用伪谱法求解∂u∂t∂u∂x0\frac{\partial u}{\partial t}\frac{\partial u}{\partial x}0∂t∂u​∂x∂u​0。 初场为u0(x)e−…...

创建网页用什么软件/深圳网站设计专业乐云seo

在这个例子中&#xff0c;主要会用到python内置的和OS模块的几个函数&#xff1a;os.walk() &#xff1a; 该方法用来遍历指定的文件目录&#xff0c;返回一个三元tuple(dirpath, dirnames, filenames) &#xff0c;其中dirpath为当前目录路径&#xff0c;dirnames为当前路径下…...

属于b2b电子商务模式的平台有/seo排名优化seo

导读&#xff1a;什么样的区域对人才最具吸引力&#xff1f;广东海丝研究院推出的《广州11区人才吸引力指数报告》显示&#xff0c;广州11区中&#xff0c;天河区人才吸引力指数优势明显&#xff0c;位列第一&#xff0c;黄埔区、白云区、越秀区、南沙区紧随其后&#xff0c;海…...

网站开发 自动生成缩略图/泰安百度推广代理商

JVM怎么判断对象是否存活 引用计数算法 引用计数算法比较简单&#xff0c;对每个对象保存一个整型的引用计算器属性。用于记录对象背应用的情况。对于一个对象A&#xff0c;只要有任何一个对象引用了A&#xff0c;则A的引用计数器就加1&#xff1b;当引用失效时&#xff0c;引用…...