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 14:00:08

Lua 的 Coroutine(协程)模块

基本概念 Lua 的 Coroutine&#xff08;协程&#xff09;是一种轻量级的线程&#xff0c;它允许程序在单个线程中实现多个执行流的协作式调度。与操作系统线程不同&#xff0c;协程是完全由用户控制的&#xff0c;在用户态进行切换&#xff0c;不需要内核参与。 核心功能 创…

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

Flutter+DevEco Studio实战:简易天气查询工具开发指南

跨平台开发与HarmonyOS生态融合的趋势下&#xff0c;利用Flutter快速构建UI、DevEco Studio适配HarmonyOS设备的开发模式&#xff0c;能有效提升应用开发效率。本文将以“简易天气查询工具”为案例&#xff0c;详细讲解Flutter与DevEco Studio结合开发的全流程&#xff0c;涵盖…

作者头像 李华
网站建设 2026/6/10 16:50:00

基于Springboot一站式家装服务平台【附源码+文档】

&#x1f495;&#x1f495;作者&#xff1a; 米罗学长 &#x1f495;&#x1f495;个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#…

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

基于Springboot养老保险管理系统【附源码+文档】

&#x1f495;&#x1f495;作者&#xff1a; 米罗学长 &#x1f495;&#x1f495;个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#…

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

Windows游戏控制器虚拟化配置全攻略

Windows游戏控制器虚拟化配置全攻略 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 在当今多元化的游戏环境中&#xff0c;玩家们常常面临一个令人困扰的技术难题&#xff1a;如何在Windows系统上实现不同品牌游戏控制器的完美兼容…

作者头像 李华