news 2026/10/13 13:27:33

(强烈推荐)不用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/10/12 19:41:07

商业级图像合成引擎6.0版本重磅发布:解锁跨场景视觉创作新范式

在数字内容创作领域&#xff0c;图像合成技术正经历从基础拼接向专业级融合的跨越式发展。近日&#xff0c;备受行业关注的商业级图像合成引擎正式推出6.0版本&#xff0c;凭借七大核心功能与全场景覆盖能力&#xff0c;重新定义了视觉内容生产的效率与质量标准。该版本作为基础…

作者头像 李华
网站建设 2026/10/12 9:32:44

MyBatis-Plus与Spring整合(02--Service的代理)

文章目录 1、代码版本 2、代理实现过程 3、被代理的OrderService分析 3.1、结构如下 4、事务的管理 1、代码版本 springboot3.2.5, spring6.1.6, mybatis-plus3.5.5 业务代码 1个Controller 2个Service以及实现类 一个普通Service,一个MyBatis-Plus的Service @RestController…

作者头像 李华
网站建设 2026/10/13 2:07:40

11、渗透测试实战:目标探索、利用与攻击行动

渗透测试实战:目标探索、利用与攻击行动 在渗透测试的过程中,我们首先需要对目标环境进行探索和信息收集,之后再采取行动进行入侵和利用。以下将详细介绍相关的步骤和工具。 目标探索与信息收集 在完成前期的侦察和武器化阶段后,我们对目标环境有了一定的了解。此时,我…

作者头像 李华
网站建设 2026/10/12 11:41:37

16、攻击收尾:报告与撤离

攻击收尾:报告与撤离 1. ProxyChains测试 当我们挑选好代理并更新了 proxychains.conf 文件后,就可以进行测试。使用 ProxyChains 的语法如下: proxychains <command you want tunneled and proxied> <opt args>若要运行 nmap 扫描,可使用以下命令: r…

作者头像 李华
网站建设 2026/10/12 4:49:19

20、树莓派的替代项目探索

树莓派的替代项目探索 树莓派网络配置与Tor网络使用 首先,我们需要按以下方式编辑 /etc/tor/torrc 文件: Log notice file /var/log/tor_notices.log VirtualAddrNetwork 10.99.0.0/10 AutomapHostsSuffixes .onion,.exit AutomapHostsOnResolve 1 TransPort 9040 Tran…

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

事件查看器-事件ID

事件查看器-事件ID一、核心日志类别说明二、系统日志&#xff08;System&#xff09;常用事件ID&#xff08;重点&#xff09;1. 启动/关机相关2. 服务相关3. 驱动/硬件相关4. 系统更新/组件相关三、安全日志&#xff08;Security&#xff09;常用事件ID&#xff08;安全审计重…

作者头像 李华