gpt4 book ai didi

java - Java Web 应用程序中每个用户的单例对象

转载 作者:行者123 更新时间:2023-11-30 02:19:58 26 4
gpt4 key购买 nike

我的企业应用程序需要一个 Singleton ShoppingCart 对象(每个用户),该购物车对象在技术上不应该是静态的(这可能会导致内存泄漏)。

我是否需要更改代码(或)将任何模式应用于 Web 应用程序,以实现每个用户的单例?

public final class ShoppingCartSingleTon {

private static ShoppingCartSingleTon instance = null;

private ShoppingCartSingleTon() {}

public static ShoppingCartSingleTon getInstance() {
if (instance == null) {
synchronized(ShoppingCartSingleTon.class) {
if (instance == null) {
instance = new ShoppingCartSingleTon();
}
}
}
return instance;
}
}

最佳答案

购物车通常存储在用户的 session 中。因此购物车应该是 SessionScoped 或 ViewScoped。

您可以通过注入(inject)(cdi、autowired...)包含它。 Spring 和 JavaEE 对这些都有详细的记录。

在多个用户可以访问后端的 Web 应用程序中,除非明确需要,否则任何内容都不应是静态的。可能会导致大量的同步和并发问题。

关于java - Java Web 应用程序中每个用户的单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47160345/

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