Spring的单例模式底层实现
来源:互联网 发布:逆袭网络剧06在线观看 编辑:程序博客网 时间:2024/06/05 10:25
第一种称为饿汉式单例,第二种称为懒汉式单例。至于为什么起这个名字,自己好好想想吧。
饿汉式单例在自己被加载时就将自己实例化,如果从资源利用效率角度来讲,比懒汉式单例类稍差些。但是从速度和反应时间角度来讲,则比懒汉式要稍好些。
但是遗憾的是:懒汉式单例类也不能被继承。
我们克服前两种单例类不能被继承的缺点,我们可以使用另外一种特殊化的单例模式,它被称为单例注册表。
下面我们来看看Spring中的单例实现,当我们试图从Spring容器中取得某个类的实例时,默认情况下,Spring会才用单例模式进行创建。
饿汉式单例在自己被加载时就将自己实例化,如果从资源利用效率角度来讲,比懒汉式单例类稍差些。但是从速度和反应时间角度来讲,则比懒汉式要稍好些。
但是遗憾的是:懒汉式单例类也不能被继承。
我们克服前两种单例类不能被继承的缺点,我们可以使用另外一种特殊化的单例模式,它被称为单例注册表。
下面我们来看看Spring中的单例实现,当我们试图从Spring容器中取得某个类的实例时,默认情况下,Spring会才用单例模式进行创建。
<bean id="date" class="java.util.Date"/><bean id="date" class="java.util.Date" scope="singleton"/> (仅为Spring2.0支持)<bean id="date" class="java.util.Date" singleton="true"/>
以上三种创建对象的方式是完全相同的,容器都会向客户返回Date类的单例引用。那么如果我不想使用默认的单例模式,每次请求我都希望获得一个新的对象怎么办呢?很简单,将scope属性值设置为prototype(原型)就可以了
<bean id="date" class="java.util.Date" scope="prototype"/>
通过以上配置信息,Spring就会每次给客户端返回一个新的对象实例。
那么Spring对单例的底层实现,到底是饿汉式单例还是懒汉式单例呢?呵呵,都不是。Spring框架对单例的支持是采用单例注册表的方式进行实现的,源码如下:
阅读全文
0 0
- Spring的单例模式底层实现
- Spring的单例模式底层实现
- spring 的单例模式
- spring 的单例模式
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- 单例模式的实现
- Spring的Dao Service采用单例模式+ThreadLoca模式实现线程安全
- Spring的Dao Service采用单例模式+ThreadLoca模式实现线程安全
- spring 单例模式
- spring单例模式
- MVC学习笔记四:利用Entity Framework调用存储过程
- Graphviz入门
- MATLAB中median函数的用法
- SQL类--SQL语句构建器
- 代理服务器错误导致不能上网(Win 10)
- Spring的单例模式底层实现
- 在C#中使用EntityFramework(EF)生成实体进行存储过程的调用
- setTimeout()和setInterval()
- JQuery选择器之CSS选择器
- 【BZOJ】3884 上帝与集合的正确用法 欧拉函数
- Python中续行符的注意事项
- Linux多线程编程之创建两个子线程,分别执行子线程函数(注意编译方式)
- HTML5--javascript代码实现Tab切换
- MATLAB中find函数详解