在bean为singleton的情况下,为什么同一个applicationContext会获取多个不同的bean实例??

liulangzhe 07-05-02

以下代码会获得同一个bean实例吗?
代码:
ApplicationContext a=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
BeanFactory af =(BeanFactory)a;
r1=(myclass)af.getBean("mybean");

ApplicationContext b=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
BeanFactory bf =(BeanFactory)b;
r2=(myclass)bf.getBean("mybean");

问题:
从我测试结果来看,r1和r2是不相等的.但是"mybean"是singleton类型的,为什么不返回相同的实例呢???? 高手指点.

banq
2007-05-08 11:30

当然不是

你要对对象scope概念有一个深入了解.

spring或Jdon框架,都有一个容器概念,每个Web项目一个容器,单例是指在这个容器内单例,就象太阳在太阳系中是一个意思一样.

ApplicationContext 相当于生成一个新的容器,你生成两个容器,也就是两个太阳系,当然有两个太阳了

liulangzhe
2007-05-08 13:08

to banq:
恩,我懂了,非常感谢