spring注解驱动开发-生命周期-@Bean指定初始化和销毁方法

这回我们用个例子来说说bean的生命周期

bean的生命周期就是bean的创建---初始化---销毁的过程

容器管理bean的生命周期,可以自定义初始化和销毁方法,容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法

我们先来创建实体类Car.Class,定义初始化init方法,打印输出,再定义销毁destroy

package springorgin.demo.configbean;

public class Car {
    public Car() {
        System.out.println("car constructor...");
    }

    public void init() {
        System.out.println("car init....");
    }

    public void destory() {
        System.out.println("car destory....");
    }
}

创建配置类ConfigBeanCycle.Class,给bean配置初始化要调用的方法和销毁的时候调用方法

@Configuration
public class ConfigBeanCycle {
    @Bean(initMethod = "init", destroyMethod = "destory")
    public Car car() {
        return new Car();
    }

}

为什么写bean里呢,我们在最原始的spring.xml里也是配置bean属性里的

添加测试类,运行

public static void main(String[] args) {
        // 创建IOC容器
        AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(ConfigBeanCycle.class);
        System.out.println("容器创建完成......");
        context.getBean("car");
    }

我们发现初始化方法已经打印好了,那么销毁呢

销毁需要我们调用容器销毁的接口,才会想要进入destory方法,测试类添加 context.close();

 public static void main(String[] args) {
        // 创建IOC容器
        AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(ConfigBeanCycle.class);
        System.out.println("容器创建完成......");
        context.getBean("car");
        // 什么时候销毁呢,当然是在容器关闭的时候啊
        context.close();
    }

运行测试类

当然这是bean默认是单例的情况下会有销毁情况,当bean为多例的情况下,销毁的功能就不需要spring去做了,spring只负责容器的创建不负责多例的对象的销毁,我们来示例看一下

@Configuration
public class ConfigBeanCycle {
    // Scope("prototype")多例的情况下就不会调用初始化和销毁的方法,只有调用获取bean的时候才调用,而且调用多次是不同的bean
    @Scope("prototype")
    @Bean(initMethod = "init", destroyMethod = "destory")
    public Car car() {
        return new Car();
    }
}

在运行测试类,发现没有被销毁

总结一下

bean的生命周期:
就是bean的创建---初始化---销毁的过程
容器管理bean的生命周期,可以自定义初始化和销毁方法,容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法

构造(对象创建)时机:
    单实例:在容器启动的时候创建对象
    多实例:在每次获取的时候创建对象
初始化时机:
    对象创建完成,并赋值好,调用初始化方法。。。
销毁:
    单实例才在容器关闭的时候销毁
  ··多实例,不进行销毁,容器只管创建,不管销毁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值