首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转Spring生命周期之Lifecycle和SmartLifecycle

二、Lifecycle在讲解SmartLifecycle接口时,先讲解SmartLifecycle接口的父接口Lifecycle,不用担心,它们的作用是一样,不过SmartLifecycle作为子类功能会更强大点...三、SmartLifecycle 3.1 SmartLifecycle的作用SmartLifecycle继承了Lifecycle接口,并且提供了更智能的功能:实现SmartLifecycle接口的组件可以自动启动和停止...3.2 SmartLifecycle的定义先来看一下SmartLifecycle接口的源码:public interface SmartLifecycle extends Lifecycle, Phased...3.3 SmartLifecycle的使用我们来实现SmartLifecycle接口,来看看它具体的实践效果:@Componentpublic class MySmartLifecycle implements...SmartLifecycle的使用有大量的实践案例,所以无论实战或阅读源码,都最好需要了解SmartLifecycle相关接口。如果您对本文有任何疑问或需要帮助,请在评论区留言,我会尽力解答。

435125
您找到你想要的搜索结果了吗?
是的
没有找到

spring4.1.8扩展实战之四:感知spring容器变化(SmartLifecycle接口)

SmartLifecycle接口概览; 2. spring容器启动与SmartLifecycle的关系; 3. spring容器关闭与SmartLifecycle的关系; 4....关于Lifecycle和SmartLifecycle; 5....实战SmartLifecycle接口扩展; SmartLifecycle接口概览 先来看看SmartLifecycle接口的类图: 如上图所示,在继承了Lifecycle和Phased两个接口后...,也期望关闭时多个Lifecycle实例能并行执行,快速结束,SmartLifecycle无疑更适合; 理论上已经基本熟悉了,接下来通过一次实战来加深印象,我们自定义一个SmartLifecycle的实现类...,并在springboot中验证以下; 实战SmartLifecycle接口扩展 本次实战的内容是创建一个springboot工程,在里面自定义一个SmartLifecycle接口的实现类,如果您不想敲代码

38920

了解这些,你就可以在Spring启动时为所欲为了

SmartLifecycle 还有一种更高级的方法来实现我们的逻辑。这可以 Spring 高级开发必备技能哦。...SmartLifecycle 不仅仅能在初始化后执行一个逻辑,还能再关闭前执行一个逻辑,并且也可以控制多个 SmartLifecycle 的执行顺序,就像这个类名表示的一样,这是一个智能的生命周期管理接口...stop():容器关闭后,spring 容器发现当前对象实现了 SmartLifecycle,就调用 stop(Runnable), 如果只是实现了 Lifecycle,就调用 stop()。...getPhase:控制多个 SmartLifecycle 的回调顺序的,返回值越小越靠前执行 start() 方法,越靠后执行 stop() 方法。...stop(Runnable):容器关闭后,spring 容器发现当前对象实现了 SmartLifecycle,就调用 stop(Runnable), 如果只是实现了 Lifecycle,就调用 stop

1.1K30

spring容器初始化过程中出现异常_spring容器什么时候启动

autoStartupOnly || (bean instanceof SmartLifecycle && ((SmartLifecycle) bean).isAutoStartup())) {...// 若实现了SmartLifecycle接口,则返回SmartLifecycle.getPhase(),否则默认返回0 int phase = getPhase(bean);...接口的实现类做了很多特殊化的处理,默认情况下: 实现了 SmartLifecycle 接口的 Bean,需要保证 SmartLifecycle.isAutoStartup 返回 true 才会被处理;...没实现 SmartLifecycle 接口,但是实现了 Lifecycle 接口的 Bean 会被直接处理; 并且,在处理 Bean 的时候,还会根据声明周期“阶段”按顺序从小到大排序: 实现了 SmartLifecycle...接口的 Bean,按照 SmartLifecycle.getPhase 返回值排序从小到大执行; 没实现 SmartLifecycle 接口,但是实现了 Lifecycle 接口的 Bean ,“阶段

68310

如何在 Spring Boot 优雅关闭加入一些自定义机制

{ .... } SmartLifecycle 包含了 Phased 接口以及默认实现: public interface SmartLifecycle extends Lifecycle,...Integer.MAX_VALUE; @Override default int getPhase() { return DEFAULT_PHASE; } } 可以看出,只要实现了 SmartLifecycle...接入点一 - 通过添加实现 SmartLifecycle 接口的 Bean,指定 Phase 比 WebServerGracefulShutdownLifecycle 的 Phase 小 前面的分析中,...Lifecycle,在里面实现我们的优雅关闭接入,例如: @Log4j2 @Component public class BizThreadPoolShutdownLifecycle implements SmartLifecycle...但是问题就是,可能会引入某个框架里面带 Lifecycle bean,虽然他的 Phase 是正确的,小于 WebServerGracefulShutdownLifecycle 的,但是 SmartLifecycle.DEFAULT_PHASE

68910

【小家Spring】Spring IOC容器启动流程 AbstractApplicationContext#refresh()方法源码分析(二),Spring容器启动刷新的完整总结

LifecycleProcessor和DefaultLifecycleProcessor都是Spring3.0提供的,Lifecycle在Spring2.0就有了,但子接口SmartLifecycle是...autoStartupOnly || (bean instanceof SmartLifecycle && ((SmartLifecycle) bean).isAutoStartup())) {...因为实现了SmartLifecycle接口会有一个phase值,根据上面源码会根据此值分组执行。...所以,我们要想要这个功能,请实现SmartLifecycle,而不是Lifecycle接口 结论: Spring的IoC容器启动过程中,默认只会执行实现了SmartLifecycle接口且isAutoStartup...(所以你要想容器启动后就执行,请实现SmartLifecycle吧) AbstractApplicationContext#start() 手动调用触发。

1.9K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券