Spring Bean的生命周期
程序员文章站
2022-05-24 18:52:45
...
Bean ---- 创建-----初始化-----销毁的过程
构造(对象创建):
-
单实例:容器启动的时候创建对象
-
多实例:每次调用的时候创建实例
初始化:
对象创建完成,并赋值好,调用初始化方法
销毁:
单实例-容器关闭的时候执行销毁方法
多实例-容器不会调用销毁方法
1.指定初始化和销毁的方法
1.基于注解的方式
创建bean
package dong.bean;
public class Cat {
public Cat(){
System.out.println("--------构造器----------");
}
public void init(){
System.out.println("--------init------------");
}
public void destroy(){
System.out.println("--------destroy------------");
}
}
BeanConfig等同于 <bean class="dong.bean.Cat" init-method="init" destroy-method="destory" ></bean>
package dong.config;
import dong.bean.Cat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfig {
@Bean(initMethod = "init",destroyMethod = "destroy")
public Cat cat(){
return new Cat();
}
}
run
package dong;
import dong.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext1 = new AnnotationConfigApplicationContext(BeanConfig.class);
System.out.println("容器创建完成");
applicationContext1.close();
}
}
--------构造器----------
--------init------------
容器创建完成
--------destroy------------
2.通过Bean实现InitializingBean接口定义初始化逻辑,实现DisposableBean接口定义销毁逻辑
创建Bean
package dong.bean;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class Dog implements InitializingBean, DisposableBean {
public Dog() {
System.out.println("dog 构造器");
}
public void destroy() throws Exception {
System.out.println("dog destroy");
}
public void afterPropertiesSet() throws Exception {
System.out.println("dog init");
}
}