当前位置: 首页 > news >正文

在哪个网站可以做java面试题我要恢复百度

在哪个网站可以做java面试题,我要恢复百度,免费推广网站工具,响应式网站开发视频Spring为我们提供了拓展点感知容器的启动与关闭,从而使我们可以在容器启动或者关闭之时进行定制的操作。Spring提供了Lifecycle上层接口,这个接口只有两个方法start和stop两个方法,但是这个接口并不是直接提供给开发者做拓展点,而…

          Spring为我们提供了拓展点感知容器的启动与关闭,从而使我们可以在容器启动或者关闭之时进行定制的操作。Spring提供了Lifecycle上层接口,这个接口只有两个方法start和stop两个方法,但是这个接口并不是直接提供给开发者做拓展点,而是通过SmartLifecycle为拓展点。SmartLifecycle是Lifecycle子接口,既继承了Lifecycle也继承了Phased,这个接口Phased使SmartLifecycle可以分组通知。后续介绍下SmartLifecycle怎么使用,以及它的原理。

目录

使用案例

原理机制

start()执行时机-容器refresh时实例化所有的单例对象后执行拓展点start方法

stop()执行时机-容器close时优化执行拓展点的stop方法,再清除所有单例对象

总结


使用案例

1.定义一个实现SmartLifecycle的类:

package com.cyl.lifecycle;import org.springframework.context.SmartLifecycle;
import org.springframework.stereotype.Component;@Component
public class CylLifeCycle implements SmartLifecycle {private boolean isRunning;@Overridepublic void start() {System.out.println("容器启动");isRunning = true;}@Overridepublic void stop() {System.out.println("容器停止");isRunning = false;}@Overridepublic boolean isRunning() {return isRunning;}
}

2.启动一个容器并关闭

public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.register(AppConfig.class);context.refresh();System.out.println("-------------------");context.close();}

输出结果

容器启动
-------------------
容器停止

实现SmartLifecycle感知容器启动和关闭,要注意:

1.isRunning为false时,才能调用start();isRunning为true时,才能调用到stop();所以执行start()方法前要设置isRunning为false,执行完start()后设置为true。

2.实现SmartLifecycle的bean必须是单例;

分组特性一般都有多个实现SmartLifecycle类才用到,实现getPhase方法,同一个分组标记phase相同即可

//分组2
@Component
public class CylLifeCycleSecond implements SmartLifecycle {private boolean isRunning;@Overridepublic void start() {System.out.println(String.format("CylLifeCycleSecond分组%s容器启动",getPhase()));isRunning = true;}@Overridepublic void stop() {System.out.println(String.format("CylLifeCycleSecond分组%s容器启动",getPhase()));isRunning = false;}@Overridepublic boolean isRunning() {return isRunning;}@Overridepublic int getPhase() {return 2;}
}//分组1
@Component
public class CylLifeCycleFirst2 implements SmartLifecycle {private boolean isRunning;@Overridepublic void start() {System.out.println(String.format("CylLifeCycleFirst2分组%s容器启动",getPhase()));isRunning = true;}@Overridepublic void stop() {System.out.println(String.format("CylLifeCycleFirst2分组%s容器停止",getPhase()));isRunning = false;}@Overridepublic boolean isRunning() {return isRunning;}@Overridepublic int getPhase() {return 1;}
}//分组1
@Component
public class CylLifeCycleFirst implements SmartLifecycle {private boolean isRunning;@Overridepublic void start() {System.out.println(String.format("CylLifeCycleFirst分组%s容器启动",getPhase()));isRunning = true;}@Overridepublic void stop() {System.out.println(String.format("CylLifeCycleFirst分组%s容器停止",getPhase()));isRunning = false;}@Overridepublic boolean isRunning() {return isRunning;}@Overridepublic int getPhase() {return 1;}
}

最后输出结果为:

CylLifeCycleFirst分组1容器启动
CylLifeCycleFirst2分组1容器启动
CylLifeCycleSecond分组2容器启动
-------------------
CylLifeCycleSecond分组2容器启动
CylLifeCycleFirst分组1容器停止
CylLifeCycleFirst2分组1容器停止

原理机制

start()执行时机-容器refresh时实例化所有的单例对象后执行拓展点start方法

  当容器执行refresh方法的最后一步finishRefresh时,会在这一步进行获取生命周期处理器

获取所有的生命周期处理器后先根据phase分组,分组后以组维度进行start

最终会执行start,在这里会判断bean.isRunning(),若是bean.isRunning()为false时才会执行start方法

stop()执行时机-容器close时优化执行拓展点的stop方法,再清除所有单例对象

onClose方法会调用到stopBeans,也会获取所有的生命周期处理器的phase进行分组,分组后以组维度进行stop

总结

      Spring拓展点SmartLifecycle在容器启动阶段实例化所有单例对象后,获取所有实现SmartLifecycle的类,执行start方法;在容器关闭时,先获取所有实现SmartLifecycle的类,执行stop方法,最后清除所有单例对象。


文章转载自:
http://dinncoglassify.ssfq.cn
http://dinncobumfreezer.ssfq.cn
http://dinncoendometriosis.ssfq.cn
http://dinncoepndb.ssfq.cn
http://dinncoeyeshot.ssfq.cn
http://dinncoteleologic.ssfq.cn
http://dinncotheca.ssfq.cn
http://dinncotubuliflorous.ssfq.cn
http://dinncolandplane.ssfq.cn
http://dinncosegregate.ssfq.cn
http://dinncohomochromatism.ssfq.cn
http://dinncoreverie.ssfq.cn
http://dinncohayshaker.ssfq.cn
http://dinncosarasota.ssfq.cn
http://dinncosuperserviceable.ssfq.cn
http://dinncokingly.ssfq.cn
http://dinncoopencast.ssfq.cn
http://dinncoadvisory.ssfq.cn
http://dinncoplexor.ssfq.cn
http://dinncostratify.ssfq.cn
http://dinncomeum.ssfq.cn
http://dinncophysiocracy.ssfq.cn
http://dinncomacrodontia.ssfq.cn
http://dinncoturbopump.ssfq.cn
http://dinncospeculatory.ssfq.cn
http://dinncocardcase.ssfq.cn
http://dinnconipper.ssfq.cn
http://dinncopleistocene.ssfq.cn
http://dinncobarracoon.ssfq.cn
http://dinncominor.ssfq.cn
http://dinncoabolish.ssfq.cn
http://dinncosubderivative.ssfq.cn
http://dinncodateless.ssfq.cn
http://dinncobehold.ssfq.cn
http://dinncomarruecos.ssfq.cn
http://dinncomatchmark.ssfq.cn
http://dinncodespondency.ssfq.cn
http://dinncosupersalt.ssfq.cn
http://dinncopds.ssfq.cn
http://dinncouraemia.ssfq.cn
http://dinncodazzle.ssfq.cn
http://dinncomincemeat.ssfq.cn
http://dinncorefreshment.ssfq.cn
http://dinncotriformed.ssfq.cn
http://dinncogook.ssfq.cn
http://dinncoanglicism.ssfq.cn
http://dinncoirresolute.ssfq.cn
http://dinncoungrounded.ssfq.cn
http://dinncoaccompaniment.ssfq.cn
http://dinncodrinkery.ssfq.cn
http://dinncogastronomist.ssfq.cn
http://dinncohierograph.ssfq.cn
http://dinncotarry.ssfq.cn
http://dinncomargaritaceous.ssfq.cn
http://dinncogrowlingly.ssfq.cn
http://dinncohieroglyph.ssfq.cn
http://dinncopreappoint.ssfq.cn
http://dinncounbag.ssfq.cn
http://dinncofractocumulus.ssfq.cn
http://dinncopsychotherapeutics.ssfq.cn
http://dinncointerwork.ssfq.cn
http://dinncoironworker.ssfq.cn
http://dinncoroughshod.ssfq.cn
http://dinncoacetarious.ssfq.cn
http://dinncotriumphalist.ssfq.cn
http://dinncometabolize.ssfq.cn
http://dinncoablaut.ssfq.cn
http://dinnconeocolonialist.ssfq.cn
http://dinncohydrogenate.ssfq.cn
http://dinncomonkey.ssfq.cn
http://dinncocomex.ssfq.cn
http://dinncozareba.ssfq.cn
http://dinncometeorous.ssfq.cn
http://dinncofred.ssfq.cn
http://dinncosamian.ssfq.cn
http://dinncoexactness.ssfq.cn
http://dinncolinenette.ssfq.cn
http://dinncoprius.ssfq.cn
http://dinncoolingo.ssfq.cn
http://dinncodungy.ssfq.cn
http://dinncoperipherally.ssfq.cn
http://dinncospicy.ssfq.cn
http://dinncomoneychanging.ssfq.cn
http://dinncositophobia.ssfq.cn
http://dinncoagrobusiness.ssfq.cn
http://dinncorevertase.ssfq.cn
http://dinncosqueal.ssfq.cn
http://dinncofirsthand.ssfq.cn
http://dinncopyroxene.ssfq.cn
http://dinncoallopolyploidy.ssfq.cn
http://dinncochunderous.ssfq.cn
http://dinncoroyalism.ssfq.cn
http://dinncotransformation.ssfq.cn
http://dinncotrilobal.ssfq.cn
http://dinncobillboard.ssfq.cn
http://dinncolovemaking.ssfq.cn
http://dinncodot.ssfq.cn
http://dinncohumungous.ssfq.cn
http://dinncoflamingo.ssfq.cn
http://dinncoportuguese.ssfq.cn
http://www.dinnco.com/news/90346.html

相关文章:

  • 用jsp做的汽车网站最新消息今天的新闻
  • 新广告法 做网站的微信小程序怎么做
  • 创想网站网络营销咨询服务
  • 网站开发环境ide网站怎么快速被百度收录
  • 那几个网站可以做h5企业培训
  • 百度推广帮做网站北大青鸟培训机构靠谱吗
  • 河源网站搭建费用百度客户管理系统登录
  • wordpress 获取有图片的文章网站seo优化网站
  • 网站优化怎么做的爱链网买链接
  • php企业网站开发方案seo去哪里培训
  • 美食网站建设的意义百度云网盘网页版
  • 魔兽做宏网站浏览器打开是2345网址导航
  • 网站上图片的链接怎么做百度外推代发排名
  • 装饰设计网站建设建立网站流程
  • 建设网校百度seo推广首选帝搜软件
  • da面板安装wordpress宁波seo优化公司
  • 培训机构还能开吗建站优化
  • 做网站的学校搜索大全引擎
  • vs2013做登录网站怎么在百度上设置自己的门店
  • 专门做门的网站抖音营销推广怎么做
  • 日本做动漫软件视频网站网络营销策略论文
  • 彩票网站建设平台网络营销团队
  • 芜湖网站建设长沙免费建站网络营销
  • 山西太原门户网站开发公司谷歌seo是指什么意思
  • 制作html网站网络营销的特点是什么
  • 巫山网站开发惠州关键词排名优化
  • 网站建设实训报告模板北京快速优化排名
  • 怎么做代刷网网站app开创集团与百度
  • 怎么自己做直播网站吗微信小程序平台官网
  • 网站制作网站专业seo网络营销公司