原创

单例和多例的区别

郑重声明: 本文首发于人工博客

1、导读

什么是单例?什么是多例?它们之间有什么区别?各自的适用场景是什么?spring场景下如何是用单例和多例?这些你都搞清楚了吗?

2、基本的概念

  • 单例顾名思义就是是整个程序运行过程中只存在一个实例对象。常见的单例有静态类,enum,java设计模式中也有单例这一模式。
  • 多例 整个程序运行过程中只存在多个实例对象。每次使用的时候基本都是new出来的。

3、适用场景

spring依赖注入默认使用的是单例。

  • 如果类中存在有状态的变量,那么一般建议使用多例。因为单例的话 再并发的场景下数据会相互干扰。而多例的话数据是隔离的。
  • 如果类的实现都是无状态的,那么建议使用单例,一个实例减少类对象的开辟和gc,性能上可能会好点。

4、spring场景下如何使用

** 首先假定我们有两个类 A和B。在A中需要注入B**

4.1、单例

@Service
public class B{
}

@Service
public class A{
    @Autowired
    private B b;
}

4.2、多例

@Service
@Scope("prototype")
public class B{
}

@Service
public class A{
    private ObjectFactory<A> objectFactory;

    public methodA(){
       //获取实例对象
       A a= objectFactory.getObject();
    }
}
人工博客
人工博客

版权声明:本文为人工博客的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
本文链接:https://www.gzcx.net/article/1748

正文到此结束
本文目录