news 2026/8/16 11:19:55

(强烈推荐)不用Spring的Autowire且能看出依赖关系的写法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(强烈推荐)不用Spring的Autowire且能看出依赖关系的写法

背景:java游戏服务器,其实很多时候,都是不用SpringBoot这个东西,而是全程自己管理整个项目,这时想看清楚依赖关系,就可以采用下面的方式。

1)单例管理

package com.example.demo.util; import java.util.LinkedHashMap; import java.util.Map; public class SingletonManager { private static final Map<Class<?>, Object> singletons = new LinkedHashMap<>(); public static <T> T getIns(Class<T> clz) { Object single = singletons.get(clz); if (single == null) { try { single = init(clz); } catch (Exception e) { e.printStackTrace(); } } return (T) single; } public static Object init(Class<?> clz) throws Exception { if (singletons.get(clz) == null) { Object ins = clz.newInstance(); singletons.put(clz, ins); return ins; } return null; } }

2)A

package com.example.demo.service; import com.example.demo.util.SingletonManager; public class AService { private BService bService; public static AService getInstance() { return SingletonManager.getIns(AService.class); } public void init() { bService = BService.getInstance(); } public void a() { System.out.println("a" + bService.b()); } public String aa(){ return "aa"; } } /* ab */

3)B

package com.example.demo.service; import com.example.demo.util.SingletonManager; public class BService { private AService aService; public static BService getInstance() { return SingletonManager.getIns(BService.class); } public void init() { aService = AService.getInstance(); } public String b(){ return "b" + aService.aa(); } }

4)Main

package com.example.demo; import com.example.demo.service.AService; import com.example.demo.service.BService; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); AService aService = AService.getInstance(); aService.init(); BService bService = BService.getInstance(); bService.init(); // 打印 aService.a(); } } /* abaa */
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 14:25:59

实习刷题11

四十一&#xff1a;买卖股票的最佳时期有点像打家劫舍&#xff0c;可以分成四个状态&#xff0c;一个是持有股票&#xff0c;一个是未持有股票但可购买&#xff0c;一个是冷静期&#xff0c;一个是卖出股票的状态。还有一个是状态转移&#xff0c;也就是我就只有两个状态一个是…

作者头像 李华
网站建设 2026/8/16 8:04:31

ComfyUI中的节点兼容性检测机制说明

ComfyUI中的节点兼容性检测机制深度解析 在如今的生成式AI浪潮中&#xff0c;图像与视频生成工具早已从“一键出图”的玩具阶段&#xff0c;迈入了高度定制化、模块化的工作流时代。Stable Diffusion 的爆发式普及&#xff0c;催生了大量对精细化控制的需求——用户不再满足于简…

作者头像 李华
网站建设 2026/8/14 17:04:45

2、搭建低成本高效渗透测试平台指南

搭建低成本高效渗透测试平台指南 在搭建渗透测试平台时,我们的目标是构建一个低成本、小体积但功能强大的平台。下面将详细介绍硬件和软件的选择,以及搭建过程中的具体步骤。 1. 硬件选择及树莓派的优势 在寻找便宜且便携的计算设备时,有众多选择。在购买前,我们列出了一…

作者头像 李华
网站建设 2026/8/15 8:16:12

10、目标探索:侦察与武器化

目标探索:侦察与武器化 在网络安全领域,对目标进行深入的侦察和分析是非常重要的。本文将介绍一些实用的工具和技术,帮助你更好地探索目标网络,获取有价值的信息。 1. 网络流量监控与URL抓取 当相关命令运行后,树莓派可用于两个主机间的通信。例如,192.168.1.38 是主机…

作者头像 李华
网站建设 2026/8/13 0:59:49

19、树莓派替代项目:OpenVPN与Tor网络搭建指南

树莓派替代项目:OpenVPN与Tor网络搭建指南 1. OpenVPN配置 在完成公钥基础设施(PKI)相关操作后,会生成一些关键的密钥和证书,这些可以帮助客户端和服务器建立加密通道。匹配客户端名称的文件(如 client1.* )和 ca.crt 文件需要安全地复制到客户端,因为这些密钥在…

作者头像 李华
网站建设 2026/8/15 10:15:37

[MarkDown]学习记录

记录MarkDown的使用 | 创建于2025/12/13 简述 Markdown是种文本编辑形式,常用于编写技术文档 并且编写时要想达到目标的效果,就需要使用相应的语法 注:想要在MarkDown文本下显示语法符号, 方法1:用 \ 这个符号,用作转义字符,但只能一个符号一个符号的进行转义 比如: \ # > …

作者头像 李华