单例和多例的区别
郑重声明: 本文首发于人工博客
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
正文到此结束