什么时候实例化 spring bean

新手上路,请多包涵
ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "com/springinaction/springidol/spring-idol.xml");
Performer performer = (Performer) ctx.getBean("duke");
performer.perform();

在上面,bean 是什么时候实例化的,什么时候创建 ApplicationContext 或者什么时候调用 getBean() 的?

原文由 java_geek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
2 个回答

假设这个 bean 是一个单例,并且没有配置为惰性初始化,那么它是在上下文启动时创建的。 getBean() 刚刚捞出来。

Lazy-init beans 只会在第一次被引用时被初始化,但这不是默认的。作用域 bean(例如原型作用域)也将仅在首次引用时创建。

原文由 skaffman 发布,翻译遵循 CC BY-SA 2.5 许可协议

根据 Spring 文档

ApplicationContext 实现的默认行为是在启动时急切地预实例化所有单例 bean。

此外,您可以将它们设置为延迟加载。

原文由 vstoyanov 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题