论坛首页 Java企业应用论坛

spring中的Singleton与静态类的区别

浏览 20707 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-08-30  
楼主,Singleton是相对而言的,比如Spring的Singleton是针对Spring容器而言的,而GoF那种经典的Singleton是针对ClassLoader而言,具体你可以看下这篇文章把:http://www.digizenstudio.com/blog/2006/09/14/a-spring-singleton-is-not-a-singleton/
1 请登录后投票
   发表时间:2010-09-02  
khotyn 写道
楼主,Singleton是相对而言的,比如Spring的Singleton是针对Spring容器而言的,而GoF那种经典的Singleton是针对ClassLoader而言,具体你可以看下这篇文章把:http://www.digizenstudio.com/blog/2006/09/14/a-spring-singleton-is-not-a-singleton/

比较赞同ClassLoader和Spring容器的区别。
0 请登录后投票
   发表时间:2011-01-21  
JiongBull 写道
刚刚看spring,好像是说.
区别singleton的作用范围在ioc容器.

正解,作用域不样。静态类 的作用域是classloader吧
0 请登录后投票
   发表时间:2011-03-05  
kaowww153 写道

哎,别人真心求教,用的着这么说吗,现在je上面的人啊。。。。
楼主,我给你发个列子,你一看就明白了。

	@Autowired
	private DataExportService dataExportService;
	@Autowired
	private DataExportService dataExportService1;	
	@Test
	public void test() throws Exception {
		DataExportService dataExportService3 = new DataExportService();
		DataExportService dataExportService4 = new DataExportService();
		System.out.println(dataExportService==dataExportService1); //返回 true(spring)
		System.out.println(dataExportService3==dataExportService4); //返回 false(单例模式)
	}

 具体就是域不一样。

这个说的很清楚明了。楼主可以参考一下。

0 请登录后投票
   发表时间:2011-03-11  
爬到第四面,发现几只bug,甚讨厌。
不知道现在有的人是不是写程序把脑子写抽抽了。究竟是现实中就不会当人,还是现实中太会当人,来网上不是人一下。
真不知道哪来的莫名其妙的优越感。别人都sb,就你精,你是精b。
0 请登录后投票
   发表时间:2011-03-17  
引自spring文档,这个答案应该满意吧

当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。

换言之,当把一个bean定义设置为singlton作用域时,Spring IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。




请注意Spring的singleton bean概念与“四人帮”(GoF)模式一书中定义的Singleton模式是完全不同的。经典的GoF Singleton模式中所谓的对象范围是指在每一个ClassLoader中指定class创建的实例有且仅有一个。把Spring的singleton作用域描述成一个container对应一个bean实例最为贴切。亦即,假如在单个Spring容器内定义了某个指定class的bean,那么Spring容器将会创建一个且仅有一个由该bean定义指定的类实例。Singleton作用域是Spring中的缺省作用域
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics