关于spring Ioc单例模式的一点疑问

qq1212 2011-08-30 07:03:44
不是说spring的bean默认是单例的?也就是实例化的对象在当前上下文中都是一个的,但是我发现以下这段代码却产生了两个实例对象,这是为什么?谁能给我解释下吗?


ApplicationContext axt = new ClassPathXmlApplicationContext("Singleton.xml");
TestSingleton testSingleton1 = (TestSingleton) axt.getBean("Singleton1");
TestSingleton testSingleton2 = (TestSingleton) axt.getBean("Singleton2");

System.out.println(testSingleton1.toString());
System.out.println(testSingleton2.toString());


Singleton.xml

<!--这里的scope不论我加不加都是无效的-->
<bean id="Singleton1" class="spring.test.TestSingleton" scope="singleton"></bean>
<bean id="Singleton2" class="spring.test.TestSingleton" scope="singleton"></bean>


输出为

spring.test.TestSingleton@3df78040
spring.test.TestSingleton@44050988

...全文
602 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodeyuer125 2014-05-22
  • 打赏
  • 举报
回复
楼主没注意一句话:“当前上下文中”。可以理解为同一线程上下文。两个配置,是两个不同的线程上下文,当然是两个不同的实例。另外,即使是同一个配置,在不同的上下文中,也会被实例化成不同的实体。
java1105 2011-08-31
  • 打赏
  • 举报
回复
你的配置文件中注入的是不同的Singleton,如果这样写 axt.getBean(“singleton”)里面的singleton是同一个就可以验证了,打印出来的内存地址一致。
剑客2 2011-08-30
  • 打赏
  • 举报
回复
个人觉得单例模式就是一个bean实例化对象就只有一个,就是不管你多少次axt.getBean("Singleton1")都是一个bean实例,但是你这个是两个bean,每一个都是得到一个实例化,所以会不同。
xml
<!--这里的scope不论我加不加都是无效的-->
<bean id="Singleton1" class="spring.test.TestSingleton" scope="singleton"></bean>
Java code
ApplicationContext axt = new ClassPathXmlApplicationContext("Singleton.xml");
TestSingleton testSingleton1 = (TestSingleton) axt.getBean("Singleton1");
TestSingleton testSingleton2 = (TestSingleton) axt.getBean("Singleton1");

System.out.println(testSingleton1.toString());
System.out.println(testSingleton2.toString());
就对了
cscxxx 2011-08-30
  • 打赏
  • 举报
回复
在spring里把bean设为单例
则应该前台访问后台时生成的对象只有一个
-迷糊- 2011-08-30
  • 打赏
  • 举报
回复
spring管理BEAN,在配置文件里面,不用自己new的。
GIS__ 2011-08-30
  • 打赏
  • 举报
回复
Singleton1
Singleton2
单例是只创建一个对象哦
liangqing1990 2011-08-30
  • 打赏
  • 举报
回复
你这个根本不叫单例模式,单例应该是在applicationContext中配置一个bean(只有一个),然后getBean的对象才是单例

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧