-
Bean的生命周期 (Bean创建——初始化——销毁 )
-
容器管理bean的生命周期
-
可以自定义初始化和销毁的方法;容器在bean进行到当前生命周期的时候调用我们自定义的初始化和销毁的方法
-
构造(对象创建):
-
单实例:在容器启动的时候创建对象(调用对象的构造方法)
-
多实例:容器启动的时候不创建对象,而是在获取的时候先创建对象供使用
-
初始化:
-
单实例:对象创建完成并且属性赋值完成,调用初始化的方法
-
多实例:对象不会创建和初始化,获取之前才会创建和初始化
-
销毁:
-
单实例:容器关闭的时候会调用bean的销毁方法
-
多实例:容器不会管理多实例bean,关闭的时候不会调用销毁的方法(如果想销毁只能手动调用销毁方法)
定义bean初始化和销毁的方法有四种方式
方式一:通过@Bean注解指定初始化和销毁方法(以Car类为例):指定init-method和destroy-method属性,分别对应Car类中的方法名
方式二:通过让Bean实现InitializingBean(定义初始化逻辑), 实现DisposableBean(定义销毁逻辑)
*
测试类省略
方式三:可以使用JSR250规范里定义的注解
-
@PostConstruct:在bean创建完成并且属性赋值完成,来执行初始化
-
@PreDestory:在容器销毁bean之前通知我们进行清理工作
*
*
测试类省略
方式四:通过实现BeanPostProcessor(bean的后置处理器):
-
在bean初始化前后进行一些处理工作
-
postProcessBeforeInitialization:初始化之前工作
-
postPrecessAfterInitialization:初始化之后工作