Spring生命周期Test

一、Spring的初始化和销毁方法的3中方式

1、JSR250中@PostConstruct、@PreDestroy注解方式
2、实现Spring中提供的InitializingBean, DisposableBean接口方法
3、通过配置文件或注解方式注册初始化和销毁方法

二、代码测试
(1)主配置类代码
@Configuration
@ComponentScan(value = {"condition"})
public class SpringMainConfig {

    @Bean(initMethod = "init",destroyMethod = "destroy2")
    public Car car() {
        return new Car();
    }

    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = ContextUtil.getContext();
        Car car = (Car) ctx.getBean("car");
        ctx.close();
    }
}
(2)Car实例代码
public class Car  implements InitializingBean, DisposableBean {
    private float price;

    public Car () {
        System.out.println("1、Car的构造方法执行");
    }

    //销毁方法
    @Override
    public void destroy() throws Exception {
        System.out.println("8、实现DisposableBean接口的destroy方法执行。");
    }

    //初始化方法
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("4、实现InitializingBean接口的afterPropertiesSet方法执行。");
    }

    public void init () {
        System.out.println("5、Car配置类@Bean中注册的init方法执行");
    }

    public void destroy2 () {
        System.out.println("9、Car中注册的destroy方法执行");
    }

    @PostConstruct
    public void init2 () {
        System.out.println("3、Car中JSR250中@PostConstruct注解标记的init方法");
    }

    @PreDestroy
    public void destroy3 () {
        System.out.println("7、Car中JSR250中@PreDestroy注解标记的destroy方法");
    }
}
(3)测试输出结果

image.png

(4)总结

(1)Car的构造方法执行
(2)实现BeanPostProcessor接口postProcessBeforeInitialization方法执行
(3)Car中JSR250定义的@PostConstruct注解标记的init方法执行
(4)实现InitializingBean接口的afterPropertiesSet方法执行
(5)@Bean注解中注册的init方法执行
(6)Car—postProcessAfterInitialization.
(7)Car中JSR250定义的@PreDestroy注解标记的destroy方法
(8)实现DisposableBean接口的destroy方法执行。
(9)@Bean注解中注册的destroy方法执行

优先级:
JSR250 > Spring接口方法 > @Bean中注册的初始化和销毁方法

也可以通过断点调试看Spring的执行流程,但是因为确实看得眼花,有兴趣的可以试试~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值