请教Spring大侠,关于IoC维持一个实例对象的问题,谢谢了~

书上说,“每一个bean名称只维持一个实例,即每次通过factory.getBean("timeBean")取得的对象,其实是同一个对象,而不是每一次都产生一个新的对象。”感觉不对啊,我编了个显示时间的类time,然后用配置文件注入dateBean class="java.util.Date",发现每次执行factory.getBean("timeBean")都会显示不一样的时间啊!这是不是说明每次调用factory.getBean("")都新实例化了对象。谢谢!~要是不是帮忙解释下原因。小弟是新手~
2026年09月22日 01:52
有2个网友回答
网友(1):

Spring的bean默认就是单例模式,除非你修改过,你这里说的每次执行都不一样是因为你每次执行都要重新初始化Spring的bean,所以才不一样.

如果你是在一次主方法执行中连续取得两次这个Bean你就会发现该Bean只创建了一次.

网友(2):

从我的理解应该是书上讲错了。

所谓IoC,简单理解就是把原本应该我们去new对象这个操作转到spring容器去执行。

而且IoC核心其实就是一个工厂模式,而工厂模式就是制造(new)对象的,工厂模式中,一般都是利用反射来new具体的对象,然后返回实例。

而楼主的例子也证实了,每次都是new Data();