huangp10 2013-08-09 09:11 采纳率: 0%
浏览 1746

spring ctx.getBean()问题

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

HService h = (HService) ctx.getBean("service");

在myeclipse中执行单步调试 ,在运行到 ctx.getBean("service"); 这件按 f6

进入到AbstractApplicationContext 类 的 protected void destroyBeans() {
getBeanFactory().destroySingletons();
} 中 方法 。。

求解 为什么进入的是destroyBeans方法,而不是getBean方法???

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-12 09:46
    关注

    在运行到ctx.getBean("service")时,如果 ClassPathXmlApplicationContext 对象已经关闭了或者已经刷新了,那么它会调用 AbstractApplicationContext 中的 destroyBeans() 方法来清除并销毁已经创建的 bean。而不是执行 getBean方法


    因此,这也可能是因为在上下文被刷新或关闭之后,你再次试图获取bean,而不是因为程序设计本身的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口