news 2026/8/6 8:56:31

(强烈推荐)不用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/6 7:39:44

1、利用树莓派3和Kali Linux构建低成本便携式渗透测试平台

利用树莓派3和Kali Linux构建低成本便携式渗透测试平台 1. 渗透测试平台的选择 在渗透测试领域,选择合适的硬件和软件平台至关重要。树莓派3和Kali Linux的组合为我们提供了一个低成本、便携式的解决方案。 1.1 硬件选择与树莓派优势 树莓派是一款小型、低功耗的单板计算机…

作者头像 李华
网站建设 2026/8/6 19:56:18

7、渗透测试:计划与目标探索

渗透测试:计划与目标探索 渗透测试常用工具简介 在渗透测试中,有许多实用的工具,以下为大家介绍一些常见工具及其功能: | 工具名称 | 功能描述 | | — | — | | proxychains | 强制 TCP 连接通过代理 | | imageMagick | 用于显示、转换和编辑图像 | | shutter | 截图…

作者头像 李华
网站建设 2026/8/6 16:25:30

13、渗透测试实战:入侵与利用

渗透测试实战:入侵与利用 1. 执行JavaScript命令与前期准备 在运行JavaScript命令时,需要发挥创意。可以让其自动运行,嵌入广告中,或者采用其他创新方式。只需将JavaScript命令中的IP地址变量替换为自己的BeEF服务器的IP地址。例如,之前示例中服务器的IP地址是10.5.8.74…

作者头像 李华
网站建设 2026/8/6 10:09:51

15、蓝牙设备渗透测试与攻击收尾全攻略

蓝牙设备渗透测试与攻击收尾全攻略 在当今工作环境中,蓝牙设备日益普及,但安全性却相对薄弱。这使得蓝牙设备成为了安全渗透测试中不可忽视的一部分。本文将详细介绍一些用于检测、连接蓝牙设备的工具,以及在渗透测试结束后如何清理痕迹、隐藏网络足迹和生成报告。 蓝牙设…

作者头像 李华
网站建设 2026/8/4 19:58:59

一篇关于strncasecmp函数的超详细趣味指南

<摘要> strncasecmp是C语言中一个实用且强大的字符串比较函数&#xff0c;它在比较两个字符串时忽略字母大小写差异&#xff0c;并且可以限制比较的最大字符数。本文将用生动的生活类比&#xff08;如图书馆管理员整理书籍、音乐播放器识别文件等&#xff09;解释其核心功…

作者头像 李华
网站建设 2026/8/6 9:49:56

5大实用技巧:用downkyi打造高效视频下载工作流

5大实用技巧&#xff1a;用downkyi打造高效视频下载工作流 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。…

作者头像 李华