类实现初始化和销毁接口
配置文件两种写法
Bean销毁
Bean的初始化
两种方式:
1、Bean类中定义方法,bean标签中 init-method 和 destroy-method配置相应方法名
2、Bean类实现InitializingBean, DisposableBean接口,配置文件中则正常配置bean即可
Bean初始化及销毁逻辑处理(在singleton作用域上进行讲解)
Bean初始化——如果需要在Bean实例化时执行一些逻辑,Spring提供了两种方法:(有一个javaBean,该Bean作用,连接数据库,例如session,断开数据库连接,该Bean被创建之后,执行数据库连接的过程)
方法1:bean标签里的init-method属性,该值为Bean的某一方法,Spring实例化时,会调用Bean的该方法。
方法2:让Bean实现InitializingBean接口,Spring在实例化该Bean时,检测到Bean实现了该接口,就会调用该接口所定义的相应方法。
Bean销毁——如果需要在Bean销毁之前执行一些逻辑,有两种方法。
方法1:bean标签里的destory-method属性,该值为Bean的某一方法,Spring销毁该Bean时,会调用Bean的该方法。
方法2:让Bean实现DisposableBean接口,Spring在销毁该Bean时,检测到Bean实现了该接口,就会调用该接口所定义的相应方法。
init & destroy
Bean的初始化和销毁
当两种方法同时存在时,会先调用继承InitializingBean, DisposableBean接口的方法,然后再调用在spring.xml中定义的init-method 和 destroy-method接口。
方法二:在Bean类中继承InitializingBean和DisposableBean接口,并实现其destroy()、afterPropertiesSet()方法。
或在<beans></beans>中加上默认的初始化和销毁方法,为每个bean设置默认的初始化和销毁方法。
default-init-method="onInit" default-destroy-method="onDestory"
注意:如果某个bean没有相应的初始化和销毁方法也不会报错。
测试方法
注意:由于Bean的销毁是在执行spring的销毁时执行,故需要显式调用spring的销毁。与之前不同,需要使用AbstractApplicationContext,然后调用context.close();才能看到销毁方法。
方法一:在spring.xml文件中,定义Bean,并将刚创建的初始化和销毁的方法,填写到init-method 和 destroy-method属性当中。
做法:
先在Bean类中定义 初始化onInit() 和 销毁onDestory() 的方法。
如果需要在Bean销毁之前执行一些逻辑,有两种方法:
使用destory-method属性
让Bean实现DisposableBean接口
如果需要在Bean实例化之后执行一些逻辑,有两种方法:
使用init-method属性
让Bean实现InitializingBean接口
3-2 bean初始化 使用init-method实例化之后执行的逻辑
使用 destory-method 定义实例销毁前的逻辑
使用 init-method 定义实例化后的逻辑
使用 AbstractApplicationContext 可以调用 Spring 上下文的销毁方法
创建一个Bean类并创建 onInit 和 onDestroy 两个方法,分别表示 Bean的初始化和销毁,并将 Bean 的实例通过spring.xml注入到容器中