首页 > 编程知识 正文

理解Spring Bean生命周期

时间:2023-05-04 20:45:41 阅读:271316 作者:1285

一、Spring Bean的概念

Spring bean通常来说是指被Spring容器所管理的java对象;而spring容器就是负责实例化、配置和装配Spring bean;

二、Spring Bean容器

Spring Bean容器可以获取Spring Bean,通过BeanFacroty接口或ApplicationContext接口,两者的区别在于Application继承自BeanFacrory接口,所以Application包含了Beanfactory的所有功能以及拓展了更多功能,而且BeanFactory是懒加载的,ApplicationContext是预加载;

三、实例化SpringBean

Spring提供了三种初始化方式

1.实现InitializingBean接口

public interface InitializingBean{ void afterPropertiesSet() throws Exception;}

2.@PostConstruct,通常将注解放在方法上

@PostConstrcutpublic void init(){ System.out.println("init method...");}

3.init-method

public class MyClass{ public void init(){ System.out.println("init method..."); } }@Configurationpublic class AppConfig{ @Bean(initMethod="init") public MyClass myclass(){ return new MyClass(); }}

或者是这种xml配置

<bean id="myClass" class="com.demo.Myclass" init-method="init" />

这三种初始化方式在框架中组合使用,调用顺序是@PostContruct会被最先调用,其次是InitializingBean.afterPropertiesSet()方法,最后是调用通过xml配置的init-method方法或者设置@Bean注解设置的initMethod方法;

而在实例化Spring Bean之前会有两个回调方法,这个好理解,就好像页面加载一样,有生命周期函数,而这个生命周期函数的实现就是BeanPostProcessor接口,BeanPostProcessor有两个方法,分别是postProcessorBeforeInitialization和postProcessorAfterInitialization;

所以到目前为止,我们知道的Spring Bean的生命周期函数就是如下这种情况;

四、Spring Bean的销毁

既然有创建就会有销毁,否则就是滥用内存,当Spring移除bean时,相关回调方法如下;

我们知道初始化又@PostConsruct、InitializingBean.afeterPropertiesSet()、init-method三种方式,那么对应这三种创建方式便会有三种对应的销毁方式,具体如下;

1.DisposableBean

2.@PreDestory

3.destory-mthod

组合使用调用顺序是@PreDestory、DisposabelBean.destory()、调用XML配置的destory-method方法或者是@Bean注解设置的饿destoryMethod属性的方法

自此我们知道的Spring Bean的生命周期就更加全面了,具体流程如下

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。