首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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接口的实现类,如果您不想敲代码

    61020

    玩转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相关接口。如果您对本文有任何疑问或需要帮助,请在评论区留言,我会尽力解答。

    2K127

    spring应用篇

    和初始化回调一样,同样有实现类(DisposableBean)、注解(@PreDestroy)和xml配置方式(destroy-method), 启动和关闭回调 需要实现Lifecycle或者SmartLifecycle...它不好的地方在于,需要显示调用start和stop方法,但一般的web项目都是使用了springboot、springMvc等,容器入口得被封装起来了,无法去调用这些方法,这时候就扩展出了SmartLifecycle...,它不需要显示调用start方法,可以控制多个smartLifecycle实例的调用顺序。...SmartLifecycle有6个方法,3个是新增的,其他3个是lifeCycle里的。...start方法的优先级越高,值越大,执行stop方法的优先级越高 int getPhase(); // 在容器初始化完成,会调用finishRefresh方法,里面通过Lifecycle处理器,获取到所有的smartLifecycle

    45810

    【小家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() 手动调用触发。

    2.3K20

    了解这些,你就可以在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.2K30

    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 ,“阶段

    77510

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券