Java 在会话中注入特定于用户的单例类

Java 在会话中注入特定于用户的单例类,java,spring,jakarta-ee,saas,Java,Spring,Jakarta Ee,Saas,我正在做一个项目,将一个独立的产品转换成SaaS应用程序。当前项目只有很少的单例类 现在我的问题是 在SaaS中,不同客户下的多个用户将访问同一应用程序。对于每个用户,单例类需要是特定于客户的 例如,特定公司a的用户的LicenseManager类应该获得LicenseManager的单例类实例class1,而其他公司的用户说公司B应该获得单例类实例class2。类似地,特定公司用户的singleton DBManager类实例应该是特定于公司的 使用Spring或任何其他框架都可以做到这一点吗

我正在做一个项目,将一个独立的产品转换成SaaS应用程序。当前项目只有很少的单例类

现在我的问题是

在SaaS中,不同客户下的多个用户将访问同一应用程序。对于每个用户,单例类需要是特定于客户的

例如,特定公司a的用户的LicenseManager类应该获得LicenseManager的单例类实例class1,而其他公司的用户说公司B应该获得单例类实例class2。类似地,特定公司用户的singleton DBManager类实例应该是特定于公司的


使用Spring或任何其他框架都可以做到这一点吗?在父会话下是否可以有类似父会话和子会话的内容?

以下是我的建议。基于这些,你可以想出一个合适的解决方案

  • 将这些类转换为非静态类。有一些逻辑来创造 为每个客户使用抽象工厂的这些类的实例 基于偏好。对每个实例使用相应的实例 顾客
  • 将这些类转换为抽象类。为孩子们上课 每种客户类型。使用工厂方法实例化适当的 儿童班。如果在Spring上,可以使用依赖项注入 框架
  • 将这些类保持为静态。移动配置 (成员变量)用于分离配置实用程序的逻辑,其中 您应该将适当的配置返回到基于 向顾客推销

  • 没有所谓的“静态类”。有静态的内部类,但那是另一回事。你想做什么?请检查我是否编辑过这真的很广泛。这将取决于您使用的技术和当前的体系结构。唯一可以说的是,您需要将单例转换为其他内容。