Spring Bean的生命周期
实例化
1 .实例化一个Bean,也就是我们常说的new。
依赖于IOC的注入
2 .根据Spring上下文配置实例化Bean,也就是IOC注入。
实施setBeanName
3 .如果此Bean已经实现了BeanNameAware接口,则调用所实现的set beanname (字符串)
方法。 此处传递的是Spring配置文件中Bean的id值
beanfactory警报的实现
4 .如果此Bean已经实现了BeanFactoryAware接口,则调用所实现的setBeanFactory。
setBeanfactory(beanfactory )正在传递Spring工厂本身) )可以通过此方法获取其他bean。
只需在Spring配置文件中设置常规Bean )。
应用程序连接插件的实现
5 .如果此Bean已经实现了应用程序连接接口,将调用
将setapplicationcontext (application context )方法传递给Spring上下文(同样地
可以实现步骤4的内容,但由于应用上下文是BeanFactory的子代,因此比4更好
口,有更多的实现方法)
实现postprocessbeforeinitialization接口-初始化预处理
6 .如果此Bean具有关联的bean post处理器接口,将调用
beanpostprocessbeforeinitialization (对象字符串)方法在BeanPostProcessor中很常用
这是对Bean内容的更改,它是在Bean初始化结束时调用它的方法,因此也可以进行应对
用于内存或缓存技术。
初始化方法
如果Bean在Spring配置文件中设置了init-method属性,则会自动调用该设置的初始化方法。
postProcessAfterInitialization
8 .如果此Bean具有关联的bean post处理器接口,将调用
postprocessafterinitialization (对象字符串)方法。
注意:完成以上操作后,可以应用此Bean。 那么,由于这个Bean是单个,所以1
通常,调用具有相同id的Bean是内容地址相同的实例。 当然,在Spring配置文件中
也可以配置非Singleton。
Destroy过期自动清理阶段
9 .不再需要bean时,如果经过清理阶段,bean实现了名为DisposableBean的接口,则会进行调整
使用它实现的destroy ()方法;
删除方法自配置清理
10 .最后,如果为此Bean的Spring配置了destroy-method属性,则会自动调用该配置
销毁方法。
11. bean标签有两个重要的属性:初始化方法和删除方法。 可以自己定制
初始化和注销方法。 这些也有适当的评论@PostConstruct和@PreDestroy )。
bean id=' '类=' ' init-method='初始化方法' destroy-method='销毁方法'