Bean的实例化:
Bean本质上就是对象,创建bean使用构造函数。
再bean上加一个private的构造函数,里面打印一串字符,再运行会发现字符被打印出来了,说明bean的创建用的是构造函数,并且它可以调用private的方法,说明内部的实现用的是反射。
private TestServiceImpl(){
System.out.println("Service Constructor is invoked.................");
}
创建了两个bean,调用了两次构造函数。
如果没有提供无参的构造函数,会抛出BeanCreationException。
Bean实例化的方式:
- 构造方法
- 静态工厂
- 实例工厂(FactoryBean)
Bean生命周期:
bean从创建到销毁的整体过程。
初始化容器:
- 创建对象(内存分配)
- 执行构造方法
- 执行属性注入(set操作)
- 执行bean初始化方法
使用bean
- 执行业务操作
关闭/销毁容器
- 执行bean销毁方法
bean销毁时机
容器关闭前触发Bean的销毁
关闭容器的方式:
1.手工关闭容器:ConfigurableApplicationContext接口的close()函数。
2.注册关闭钩子:在虚拟机退出前先关闭容器再退出虚拟机,ConfigurableApplicationContext接口的registerShutdownHook()函数。