news 2026/5/26 2:28:23

(强烈推荐)不用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/5/26 4:51:06

PanSearch网盘影视资源搜索聚合工具源码

核心功能&#xff1a; 1. 聚合搜索&#xff1a;集成多个网盘资源搜索引擎&#xff0c;一站式查找影视、软件、资料。 2. 每日热点&#xff1a;内置科技与新闻热点聚合&#xff08;Readhub&#xff09;&#xff0c;随时掌握最新动态。 3. 极简部署&#xff1a;采用 No-Build 模式…

作者头像 李华
网站建设 2026/5/26 1:34:52

最火流量主壁纸头像小程序源码

这是一款2025最火流量主壁纸头像小程序源码超美UI壁纸小程序带有流量主小程序并且特供图文超详细部署教程&#xff0c;喜欢的自行部署吧&#xff01; 内涵配置域名和广告替换方法&#xff0c;搭建详细教程&#xff0c;带制作姓氏头像页面、星座匹配页面、九宫格拼图页面、创业…

作者头像 李华
网站建设 2026/5/26 4:51:12

简单升压稳压电路 LTspice 结果

简 介&#xff1a; 本文通过LTspice仿真分析了升压电路的工作特性。首先测量了电路的静态工作电流为3.47mA&#xff0c;并测试了不同负载下的转换效率&#xff1a;1kΩ负载时效率为58.9%&#xff0c;100Ω负载时效率达72.8%。实验发现输出电压随负载变化明显&#xff0c;100Ω时…

作者头像 李华
网站建设 2026/5/25 13:37:28

MySQL运维篇——日志和主从复制

日志&#xff08;错误日志&#xff0c;二进制日志&#xff0c;查询日志&#xff0c;慢查询日志&#xff09;&#xff08;1&#xff09;错误日志&#xff1a;服务器运行中发生错误时的相关信息 /var/log/show variables like ‘%log_error%’ ; —查看日志位置&#xff08;2&…

作者头像 李华
网站建设 2026/5/25 6:53:00

Day 34 模块和库的导入

知识点&#xff1a; 1.导入官方库的三种手段 2.导入自定义库/模块的方式 3.导入库/模块的核心逻辑&#xff1a;找到根目录 使用案例 场景1: main.py和circle.py都在同一目录 场景2: main.py和circle.py都在根目录的子目录model/下 场景3: main.py在根目录&#xff0c;circ…

作者头像 李华