区分单例还是多例对象
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
单例的几个状态
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
初始化方法和销毁方法
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
设置成我们定义的方法
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
测试
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
有创建和初始化。但是没有销毁,。对象一直没有销毁的方法
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
main方法是一切应用程序的入门。当main方法结束后。我们当前应用中线程占用的内存全部释放。这里当前也包含了我们的容器。
此时没来得及调用销毁方法就已经消失了。
只能手动关闭容器。
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
这里close方法报错了。
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
这是因为ClassPathXmlApplicationContext用的是ApplicationContext这个接口类型去接收的
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
多态的特点。如果你看成父类对象的时候,只能调用父类对象的方法,而子类的方法一个也调用不了。这里用自己去接收。ClassPathXmlApplicationContext
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
再次运行。
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

多例

改成多例的情况
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
容器销毁依然在这
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
没有看到容器关闭的信息。
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

可以在这里加个断点进行测试。用Debug的方式去运行。
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
断点,停住,点击下一步
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
到这了还没有创建
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
走到这里才被创建
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

如果改成单例

阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
加断点,debug调试
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP
只要解析完了配置文件。马上就创建和初始化
阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

这时候也就解释了。spring可以感知到对象的作用范围。选择什么时候创建对象立即还是延迟。

阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期-LMLPHP

05-11 14:57