SmartLifeCycle接口知识扩展

SmartLifeCycle是一个接口,当Spring容器加载完所有的Bean并且初始化之后,会继续回调实现了SmartLifeCycle接口的类中对应的方法,比如(start、stop)。

SmartLifecycle和Lifecycle区别

  1. 不需要容器显示调用start()方法,就可以回调SmartLifecycle接口的start()。
  2. 容器里面如果有多个SmartLifecycle实例,可以控制调用的顺序。
  3. Lifecycle需要显示调用容器的start()和stop()方法,Lifecycle的接口方法才会被执行。
  4. bean的初始化方法和销毁方法是Bean生命周期级别的;而Lifecycle是容器生命周期级别的。
    在这里插入图片描述

代码案例

spring boot 项目

package com.jvmoomdemo;
import org.springframework.context.SmartLifecycle;
import org.springframework.stereotype.Component;

@Component
public class TestSmartLifeCycle implements SmartLifecycle {

    private volatile boolean running = false;

    @Override
    public boolean isAutoStartup() {
        return true;
    }

    @Override
    public void start() {
        System.out.println("...容器启动完成 ...");
        this.running = true;
    }

    @Override
    public void stop(Runnable callback) {
        System.out.println("================stop==============");
        stop();
        callback.run();
    }

    @Override
    public void stop() {
        System.out.println("...容器停止 ...");
        this.running = false;
    }

    @Override
    public int getPhase() {
        return 0;
    }

    @Override
    public boolean isRunning() {
        System.out.println("...检查运行状态 ...");
        return this.running;
    }
}

执行效果:
停止点击红圈
在这里插入图片描述

SmartLifeCycle作用

  • Spring加载和初始化所有bean后,执行一些任务或者启动需要的异步服务,可以使用 SmartLifecycle 来完成。
  • 开发者在所有的bean都创建完成(getBean) 之后执行自己的初始化工作,或者在退出时执行资源销毁工作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡^泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值