gpt4 book ai didi

java - 术语 bean 初始化和实例化是否可以互换

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:09:39 25 4
gpt4 key购买 nike

首先我了解Difference between initializing a class and instantiating an object?

其次,在理解spring bean生命周期时产生了困惑。 enter image description here

bean 初始化和实例化这两个词是否可以互换,或者 bean 初始化是否发生在 bean 实例化之后?

ApplicationContext ctx = new ClassPathXmlApplicationContext(
"com/springinaction/springidol/spring-idol.xml");
Performer performer = (Performer) ctx.getBean("duke");
performer.perform();

当 bean 初始化和实例化时,也可以使用上面的示例。

最佳答案

bean 由您的 Spring 容器实例化和初始化,这就是依赖注入(inject) (DI) 的工作原理。您在代码中所做的是,声明您希望将 Performer 的实例注入(inject)到您定义的这个 performer 变量中。您的 DI 上下文会注意将上下文中实际可用的这个实例传递给您。你可以期待这样的行为

  1. DI 容器在你的 bean 类上做一个“新的”
  2. 默认初始化发生在这个新生成的对象上,也就是调用默认构造函数
  3. 您自定义的 init 方法启动并改变对象状态,就像您定义它一样

编辑

如果您想影响 bean 的初始化,您可以定义一个初始化回调,参见 here有关该主题的更多信息。

编辑 2

Spring Bean Lifecycle Tutorial还为您提供了容器中发生的事情的漂亮流程图。如果您查看那里的图表,在“bean 已准备好使用”语句之后,它将被注入(inject)到您已声明预期用途的代码段中。

关于java - 术语 bean 初始化和实例化是否可以互换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com