代码之家  ›  专栏  ›  技术社区  ›  vinay 1233

java web app中每个用户的单例对象

  •  1
  • vinay 1233  · 技术社区  · 7 年前

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

    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;
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Stefan LoKran Dotti    7 年前

    购物车通常存储在用户的会话中。因此,购物车应该是SessionScope或ViewScope。

    您可以通过注入(cdi、自动连线等)将其包括在内。Spring和JavaEE对此有很好的记录。

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