news 2026/6/10 18:10:02

(强烈推荐)不用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/6/10 11:54:24

12、社会工程学攻击工具:SET与BeEF深度解析

社会工程学攻击工具:SET与BeEF深度解析 1. 社会工程学攻击概述 社会工程学攻击利用人们的信任来突破安全防线。大多数安全架构旨在阻止未经邀请的访客进入目标网络,但攻击者可以欺骗内部用户开门放行。攻击者常伪装成权威人士或家庭成员来获取受害者的信任,成功后可能获得…

作者头像 李华
网站建设 2026/6/9 19:54:04

应用运维目录

应用运维目录一、写在前面二、应用分类ApacheMySQLJavaPythonDockerNginxMinIONacosZabbix一、写在前面 为了方便后面查找和更新&#xff0c;在这里列出跟应用有关的文档连接。 二、应用分类 Apache 1、安装教程 2、报错处理 MySQL 1、安装教程 CentOS7下安装MySql 2、…

作者头像 李华
网站建设 2026/6/9 18:18:23

UDP网络巩固知识基础题(2)

1. UDP协议工作在哪一层&#xff1f;A. 物理层 B. 数据链路层 C. 网络层 D. 传输层答案&#xff1a;D 解析&#xff1a; UDP&#xff08;User Datagram Protocol&#xff09;是传输层协议&#xff0c;与TCP同属传输层&#xff0c;提供无连接的数据传输服务。2. UDP协议的特点不…

作者头像 李华
网站建设 2026/6/10 13:42:17

【SSM戒烟网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案

摘要 随着互联网的高速发展&#xff0c;线上管理成为当代人们管理事物的重要手段之一&#xff1b;戒烟网站的开发也迫在眉睫。所以采用B/S模式, MySQL数据库以及通过java技术来开发此网站的目的是建立一个戒烟网站&#xff0c;这样可以有效地解决戒烟管理混乱的局面。本网站设计…

作者头像 李华
网站建设 2026/6/10 14:27:35

百度网盘直链解析工具:简单3步实现全速下载的完整教程

还在为百度网盘龟速下载而苦恼吗&#xff1f;每次看到几十KB的下载速度&#xff0c;是不是感觉回到了拨号上网的时代&#xff1f;这款百度网盘直链解析工具正是你需要的提速利器&#xff0c;它能帮你提取真实下载链接&#xff0c;让下载速度直接提升&#xff01; 【免费下载链接…

作者头像 李华