gpt4 book ai didi

java - 多个单例 bean 引用同一个类

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:22 25 4
gpt4 key购买 nike

我有一个java类,可以说“class1”,它基本上包含一个ConcurrentHashMap(用作缓存)和一些用于更新和删除映射中的条目的函数。这个类并不是设计为单例类。我正在与一位同事讨论,但由于我在互联网上读到的几篇文章而无法真正做出决定。我问是否可以这样做-

<bean id="reqrespCacheMgr1" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="singleton">
</bean>
<bean id="reqrespCacheMgr2" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="singleton">
</bean>
<bean id="reqrespCacheMgr3" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="singleton">
</bean>

我基本上是在尝试创建同一个类的3个单例实例..我认为它并没有真正破坏单例性的含义,因为我们谈论的是spring bean工厂上下文中的单例范围,而不是类加载器上下文..我知道有其他方法可以做到这一点..就像在同一个类中拥有3个并发 HashMap 并仅使用一个单例bean引用,通过尝试为同一类中的3个映射创建更新和删除方法。

我希望我没有让它变得困惑,但我想知道这是一个好方法。我担心我对设计模式的使用不当......

如果问题不清楚,请告诉我

最佳答案

看来你需要的不是单例而是原型(prototype)

<bean id="reqrespCacheMgr" class="gravity.applications.RFQService.reqrespgtwy.utility.ReqRespCacheManager" scope="prototype" />

class B1 {
@Autowire
ReqRespCacheManager cacheManager;
}

class B2 {
@Autowire
ReqRespCacheManager cacheManager;
}

class B3 {
@Autowire
ReqRespCacheManager cacheManager;
}

所有 3 个 bean 将获得 ReqRespCacheManager 的新实例

关于java - 多个单例 bean 引用同一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16450803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com