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

IOC - 自定义IOC容器

1、定义接口与实现类

// Service接口
public interface Service {void execute();
}
// Service的实现类
public class MyService implements Service {@Overridepublic void execute() {System.out.println("MyService 执行了.");}
}

2、自定义ioc容器以绑定接口与实现类

import java.util.HashMap;
import java.util.Map;public class IoCContainer {private Map<Class<?>, Object> components = new HashMap<>();public <T> void register(Class<T> componentClass, T component) {components.put(componentClass, component);}public <T> T resolve(Class<T> componentClass) {if (components.containsKey(componentClass)) {return (T) components.get(componentClass);} else {throw new RuntimeException("Component not found: " + componentClass.getName());}}
}

3.使用:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;//@SpringBootApplication
public class DemoLfsunStudyCustomiocApplication {//    public static void main(String[] args) {
//        SpringApplication.run(DemoLfsunStudyCustomiocApplication.class, args);
//    }public static void main(String[] args) {IoCContainer container = new IoCContainer();container.register(Service.class, new MyService());Service service = container.resolve(Service.class);service.execute();}
}

类似于之前IOC - Google Guice

相关文章:

IOC - 自定义IOC容器

1、定义接口与实现类 // Service接口 public interface Service {void execute(); } // Service的实现类 public class MyService implements Service {Overridepublic void execute() {System.out.println("MyService 执行了.");} }2、自定义ioc容器以绑定接口与实…...

力扣第647题 回文子串 c++ 动态规划 双指针 附Java代码 注释解释版

题目 647. 回文子串 中等 相关标签 字符串 动态规划 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串…...

【Go入门】struct类型

【Go入门】struct类型 struct Go语言中&#xff0c;也和C或者其他语言一样&#xff0c;我们可以声明新的类型&#xff0c;作为其它类型的属性或字段的容器。例如&#xff0c;我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性&#xff1a;姓名和年龄。这样…...

怎么改变容易紧张的性格?

容易紧张的性格是比较通俗的说法&#xff0c;在艾森克人格测试中&#xff0c;容易紧张的性格就属于神经症人格&#xff0c;神经质不是神-经-病&#xff0c;而是一种人格特征&#xff0c;这种特征包括&#xff1a;敏感&#xff0c;情绪不稳定&#xff0c;易焦虑和紧张。有兴趣的…...

合作共赢 共克时艰

​ 采访人&#xff1a;最近财政部11月6日通报隐性债务问责典型案例&#xff0c;这中间涉及湖北多所重要地市&#xff0c;形成新增隐性债务200多亿&#xff0c;您怎么看这件事&#xff1f; 辜渝傧&#xff1a;是的&#xff0c;无论是数字还是涉及的范围都可以明显感觉到“防范…...

VCSA7许可证过期问题

公司两台ESXI7虚拟化系统&#xff0c;使用VCSA7进行日常管理&#xff0c;在使用过程中一直清单中包含过期或即将过期的许可证。 查看许可证清单中&#xff0c;已经添加了正式授权的许可证&#xff0c;且已经分配给了ESXI主机&#xff0c;但是任然有到期提示。 最后查看试用许可…...

解决win11更新后,文件夹打不开的bug

更新win11系统了&#xff0c;给我更了个bug&#xff0c;找了好多解决方案&#xff0c;发现下面这个可以解决问题。 第一步 找到注册表 第二步 备份注册表 为了防止意外情况&#xff0c;备份注册表。如有意外问题&#xff0c;可以导入导出的注册表进行恢复。 第三步 删除指定…...

修复了数个Bug!

v2.0.1版本已经在 github release 了&#xff0c;欢迎大家体验使用&#xff0c;开源版是永久免费的。 ## 新增与优化的功能 新增(测试报告): 测试报告根据测试执行详情&#xff0c;进行查看 新增(用户设置): 用户权限为普通用户和管理员&#xff0c;普通用户根据设置的默认产品…...

设计模式之--原型模式(深浅拷贝)

原型模式 缘起 某天&#xff0c;小明的Leader找到小明:“小明啊&#xff0c;如果有个发简历的需求&#xff0c;就是有个简历的模板&#xff0c;然后打印很多份&#xff0c;要去一份一份展示出来&#xff0c;用编程怎么实现呢&#xff1f;” 小明一听&#xff0c;脑袋里就有了…...

Linux服务器从零开始训练 RT-DETR 改进项目 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)

手把手从零开始训练 RT-DETR 改进项目 (Ultralytics版本) 教程,改进RTDETR算法 本文以Linux服务器为例:从零开始使用Linux训练 RT-DETR 算法项目 《芒果剑指 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进RT-DETR算法 文章目录 百度 RT-DETR 算法介绍改进网络代码汇总第…...

矩阵理论--矩阵分解

矩阵理论–矩阵分解 矩阵的三角分解、谱分解、最大秩分解、奇异值分解的操作步骤&#xff0c;以及相关说明。 1、QR分解 &#xff08;1&#xff09;非奇异方阵 方阵&#xff08;非奇异&#xff09;&#xff1a;将方阵分解成酉矩阵左乘正线上三角&#xff0c;或者酉矩阵右乘…...

go语言相关bug

第一个bug itcastitcast:/home/jian/share/src/go-test/homeweb-client$ go mod tidy go: finding module for package github.com/micro/go-grpc go: found github.com/micro/go-grpc in github.com/micro/go-grpc v1.0.1 go: homeweb-client/handler importsgithub.com/micr…...

Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Spring Cloud OpenFeign&#xff1a;基于Ribbon和Hystrix的声明式服务调用 Spring Cloud OpenFeign是一个声明式的服务调用框架&#xff0c;基于Feign并整合了Ribbon和…...

租用服务器带宽类型应用

服务器带宽类型多样&#xff0c;以满足不同行业的需求。本文将介绍香港常见的服务器带宽类型及其应用领域。 1. 共享带宽 共享带宽是指多个用户共同使用同一台服务器的带宽资源。这种带宽类型适用于小型企业或个人网站&#xff0c;因为其成本较低。由于多个用户共享带宽资源&…...

SOLIDWORKS实用技巧之焊件轮廓应用

1.焊件轮廓库官方下载入口 焊件轮廓可以自制&#xff0c;也可以从软件中在线下载获取直接使用&#xff0c;如图1&#xff0c;联网状态按ctrl左键点击下载&#xff0c;解压后获得库文件。 图1 图2 2.库放置的位置和配置 从SOLIDWORKS2014版起&#xff0c;软件焊件轮廓库支持可…...

本地浏览器全局翻译 demo 以火狐firefox为例【免费-简单】

translateDemo 介绍使用说明简单到流泪 本地浏览器全局翻译 demo 以火狐firefox为例 1、安装插件 使用少量的 JavaScript 脚本&#xff0c;自由定义网页显示与运行方式。2、将上述脚本 追加到 插件中即可实现全局翻译&#xff1b;3、免费&#xff1b;参与贡献特技 translateDe…...

使用多线程处理List数据

最近遇到了一个业务场景&#xff0c;需要对List中的数据逐个发起http请求(List中的数据各自独立&#xff0c;对执行顺序无要求)&#xff0c;考虑到可以使用多线程加快处理速度。 封装了如下方法&#xff1a; /// <summary>/// 多线程处理数据-无返回值/// </summary&…...

Elasticsearch--Python使用、Django/Flask集成

一、Python使用 from elasticsearch import Elasticsearchobj Elasticsearch() # 创建索引&#xff08;Index&#xff09; result obj.indices.create(indexuser, body{"userid":1,username:lqz},ignore400) # print(result) # 删除索引 # result obj.indices.de…...

pyspark将数据多次插入表的时候报错

代码 报错信息 py4j.protocol.Py4JJavaError: An error occurred while calling o129.sql. : org.apache.spark.sql.catalyst.parser.ParseException: mismatched input INSERT expecting <EOF>(line 12, pos 0) 原因 插入语句结束后没有加&#xff1b;结尾 把两个&am…...

Qt绘制饼状图

必须在MainWindow.h头文件开头放 #include <QtCharts> //必须这么设置 创建chart&#xff1a; void MainWindow::iniPiewChart() { //饼图初始化QChart *chart new QChart();chart->setTitle(" Piechart演示");chart->setAnimationOptions(QChar…...

飞跨电容三电平拓扑的实战解析:从数学原理到SiC MOSFET的高频设计

1. 飞跨电容三电平拓扑的数学起源 飞跨电容三电平&#xff08;FCML&#xff09;拓扑的命名并非随意&#xff0c;它实际上植根于18世纪的数学拓扑学。数学拓扑学研究的是几何图形在连续变形下保持不变的性质&#xff0c;这个概念最早由欧拉在1736年研究柯尼斯堡七桥问题时提出。…...

深入解析.ko驱动模块加载报错:unknown symbol问题排查与依赖管理

1. 遇到unknown symbol报错时的心态调整 第一次看到"unknown symbol in module"这个报错时&#xff0c;我正熬夜调试一个摄像头驱动。当时整个人都是懵的——明明编译通过了&#xff0c;为什么加载时会说找不到符号&#xff1f;后来才发现&#xff0c;这是Linux内核驱…...

IAR开发实战:如何用#pragma指令把C语言全局变量精准“钉”到指定RAM段(附完整icf配置)

IAR开发实战&#xff1a;全局变量精准定位到指定RAM段的高级技巧 在嵌入式开发中&#xff0c;内存管理一直是工程师们需要面对的挑战之一。当项目复杂度增加&#xff0c;性能要求提高时&#xff0c;如何高效地利用有限的RAM资源&#xff0c;将关键变量放置在最优位置&#xff0…...

MindSpore 环境配置完全指南呕

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知&#xff0c;本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台&#xff0c;有非常多的配置参数。详细的参数列表可以…...

DDR5 SDRAM中的DQS间隔振荡器:原理、应用与误差分析

1. DDR5 SDRAM中的DQS间隔振荡器是什么&#xff1f; 如果你拆开过电脑内存条&#xff0c;可能会注意到那些排列整齐的黑色芯片——这就是SDRAM。而DDR5作为最新一代的内存标准&#xff0c;在速度和能效上都比前代有了显著提升。但今天我们要聊的不是这些宏观特性&#xff0c;而…...

无侵入式Allegro许可证使用数据采集方案

无侵入式Allegro许可证使用收数据方案拿这些个年我跟各种许可证打交道&#xff0c;从最开始的Named User整到并发许可、角色绑定&#xff0c;真是踩过不少坑。你要是想解决阿里云、Enovia、3DEXPERIENCE这伙软件的许可证管理问题&#xff0c;传统方法要么成本高&#xff0c;要么…...

Python数据分析实战:用np.random.normal生成正态分布数据的5个实用场景

Python数据分析实战&#xff1a;用np.random.normal生成正态分布数据的5个实用场景 正态分布作为统计学中最基础也最重要的概率分布之一&#xff0c;在数据分析、机器学习、金融建模等领域无处不在。许多自然现象和人类行为都呈现出正态分布的特征&#xff0c;比如身高、考试成…...

小白程序员必看:收藏这5分钟,教你如何让AI从“玩具”变“生产力工具”!

本文深入剖析了AI的两大关键技术MCP和Skills&#xff0c;它们分别是AI连接外部数据和执行标准化任务的“万能接口”和“操作手册”。通过通俗易懂的解释和真实案例&#xff0c;文章展示了如何利用MCP打破信息孤岛&#xff0c;实现实时数据调用和跨平台操作&#xff1b;以及如何…...

Komikku与追踪器集成:如何实现与MyAnimeList、AniList的自动同步

Komikku与追踪器集成&#xff1a;如何实现与MyAnimeList、AniList的自动同步 【免费下载链接】komikku Free and open source manga reader for Android 项目地址: https://gitcode.com/gh_mirrors/ko/komikku Komikku是一款免费开源的Android漫画阅读应用&#xff0c;支…...

ESP32-C3轻量BLE外设开发库BLE-Kit4C3详解

1. 项目概述BLE-Kit4C3 是一款专为 ESP32-C3 芯片设计的轻量级 Bluetooth Low Energy&#xff08;BLE&#xff09;嵌入式开发库&#xff0c;其核心目标是显著降低 BLE 外设&#xff08;Peripheral&#xff09;设备的开发门槛。该库完全基于 ESP-IDF v5.x 官方 BLE 协议栈&#…...