Spring之Bean的生命周期

什么是Bean的生命周期

Bean的生命周期指的是Bean创建→初始化→销毁的过程
我们可以自定义Bean初始化和销毁方法
容器在Bean进行到当前生命周期的时候,来调用自定义的初始化和销毁方法。

初始化与销毁——自定义方法

我们创建一个Bike类

public class Bike {
	public Bike() {
		System.out.println("Bike 构造方法");
	}
	public void init() {
		System.out.println("Bike init");
	}
	public void destroy() {
		System.out.println("Bike destory");
	}
}

通过@Bean将Bike类添加到IOC容器中,并对初始化和销毁方法进行配置

@Bean(initMethod="init",destroyMethod="destroy")

我们对其进行测试

AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(MainConfig.class);
ac.close();

程序运行的结果如下:

Bike 构造方法
Bike init
Bike destory

可以看到,Bean的创建过程中首先执行了构造方法,然后调用了初始化方法,当我们调用ac.close()方法时,Bean的destory方法被调用。
需要注意的是:
对于单实例的Bean,可以正常调用初始化和销毁方法
对于多实例的Bean,容器只会负责初始化,但不会管理Bean,容器关闭时不会调用销毁方法

初始化与销毁——实现接口

1、实现InitializingBean接口的afterPropertiesSet()方法,当BeanFactory创建好对象,且把Bean所有属性设置好之后,会调用这个方法,相当于初始化方法。
2、实现DisposableBean的destory()方法,当Bean销毁时,会把单实例Bean进行销毁。

public class Bike implements InitializingBean, DisposableBean {
	public Bike() {
		System.out.println("Bike 构造方法");
	}
	//在bean属性全部被设置之后,BeanFactory会调用该方法
	public void afterPropertiesSet() throws Exception {
		System.out.println("Bike init method");
	}
	//由BeanFactory在销毁单例时调用
	public void destroy() throws Exception {
		System.out.println("Bike destroy method");
	}
}

初始化与销毁——注解使用

可以使用@PostConstruct、@PreDestroy注解
@PostConstruct:在Bean创建完成,且属于赋值完成后进行初始化,属于JDK规范的注解
@PreDestroy:在Bean将被移除之前进行通知,在容器销毁之前进行清理工作

public class Bike {
	public Bike() {
		System.out.println("Bike 构造方法");
	}
	@PostConstruct
	public void init() {
		System.out.println("Bike init @PostConstruct");
	}
	@PreDestroy
	public void destroy() {
		System.out.println("Bike destory @PreDestroy");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值