博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring单例模式简介
阅读量:6225 次
发布时间:2019-06-21

本文共 1580 字,大约阅读时间需要 5 分钟。

  hot3.png

单例模式的好处: 

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回(garbage collection)。

单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。

特点:
       1,一个类只能有一个实例
       2,自己创建这个实例
       3,整个系统都要使用这个实例
解释:
譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler( 管理所有本地和网络打印队列及控制所有打印工作), 以避免两个打印作业同时输出到打印机中。
例子:
第一种形式: 也是常用的形式。   
public class Singleton {   
private static Singleton instance = null;   
private Singleton()
{   //do something   }   
//这个方法比下面的有所改进,不用每次都进行生成对象,只是第一次使用时生成实例,提高了效率   
public static Singleton getInstance(){   
if(instance==null){   
instance = new Singleton();  
 }   
return instance;  
 }   
}
第二种形式:   
public class Singleton {   
//在自己内部定义自己的一个实例,只供内部调用   
private static Singleton instance = new Singleton();  
 private Singleton()
  //do something   }  
//这里提供了一个供外部访问本class的静态方法,可以直接访问   
public static Singleton getInstance()
{   
return instance;  
 }  
}
=======singleton bean和singleton模式区别=============================
spring
项目加载的时候bean(一个bean对应某个类)自动创建(初始化,建一个实例),而后是每次调用bean的时候是注入的(不是重新new。。所有整个系统都是这个实例,,而且是spring自动提供的)
一:对于Spring中实现Singleton模式,是以IOC容器为单位(就是说在这个容器里面bean实现Singleton),换句话说,一个JVM可能有多个IOC容器,而在这个容器里实现了singleton bean,
而Java中实现Singleton模式而言,只有一个JVM,jvm中某个class只有一个实例
二:
singleton模式中,singleton的class在整个JVM中只有一个instance,
Spring的Bean,你可以一个class配置多个Bean,这个class就有了多个instance。
这个singleton是指在spring容器中,这个Bean是单实例的,是线程共享的。所以要求这些类都是线程安全的。也就是说,不能出现修改Bean属性的方法,当然除了设值得那些setter。只要满足线程安全,这些bean都可以用singleton。而且我们在绝大多数使用上,也是这样用的,包括dao,service。
Beanfactory是Spring初始以静态方式载入的,Spring的单例IOC是基于容器级的,所以这你都不用担心与考虑.

转载于:https://my.oschina.net/barter/blog/90173

你可能感兴趣的文章
Groovy's dynamic mixin
查看>>
2018.10.27-dtoj-3996-Lesson5!(johnny)
查看>>
LCLFramework框架之数据门户
查看>>
python基础-----集合(在我的世界你是唯一)
查看>>
【转】Closeable, Readable, Flushable, Appendable
查看>>
css
查看>>
Java 语言中 Enum 类型的使用介绍
查看>>
Git and Subversion
查看>>
用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话
查看>>
opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整...
查看>>
名校推荐20本英文经典书(留着)
查看>>
反射机制(Java)
查看>>
【leetcode】Permutations
查看>>
全世界最详细的一步一步搭建RAC步骤(二)---配置ASM+裸设备【weber出品】
查看>>
LeetCode算法题-Longest Uncommon Subsequence I(Java实现)
查看>>
译文:《Grouped》各章小结
查看>>
数据库设计心得
查看>>
【洛谷 P4342】[IOI1998]Polygon(DP)
查看>>
流程管理软件(BPM)功能简介
查看>>
0408 汉堡包
查看>>