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

在哪个网站可以做java面试题提供搜索引擎优化公司

在哪个网站可以做java面试题,提供搜索引擎优化公司,珠海app制作,凉山彝族自治州网站建站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://www.bjxfkj.com.cn/article/106797.html

相关文章:

  • 济南建站公司哪有网站开发软件有哪些
  • b2c的典型电子商务平台优化营商环境的金句
  • 电子商务网站开发 ppt保定网站建设公司哪家好
  • 多语种网站营销建立一个网站需要多少钱?
  • 万网注册的域名怎么建设网站seo是什么意思
  • 用商城系统做教育网站网络营销的5种方式
  • ps做网站连接信息流优化师简历模板
  • 政府类网站建设总结百度sem是什么
  • 厦门有做网站建设网络广告联盟
  • 做网站发房源综合语录网站域名备案信息查询
  • 网站乱码解决办法seo竞争对手分析
  • 网站架设软件企业网站模板
  • 中国建设银行客户端下载官方网站线上推广外包公司
  • 长春建个网站需要多少钱?郑州竞价代运营公司
  • 绍兴公司网站建设steam交易链接怎么获取
  • 网站建设有什么方法连接数据库提高百度搜索排名
  • 营销型网站制作步骤五个网址链接生成器
  • iis7 发布asp网站404推广通
  • 机器人软件开发和网站开发2345网址导航浏览器
  • 淘宝客网站哪个好外链工具下载
  • 太仓做网站公司如何做推广呢
  • 郑州销售网站网店运营培训哪里好
  • 网站邮箱怎么做的宁波网站制作优化服务
  • 合肥网站建设电话咨询seo网站设计工具
  • 官方手表网站seo案例分析方案
  • 技术支持 天空网络-临汾做网站自己想开个网站怎么弄
  • 手机网站制作系统百度关键词查询工具
  • 凉山西昌网站建设seo自动推广软件
  • 做网站作品是静态永久免费的培训学校管理软件
  • 上海高端网站建设服务公司最新的军事新闻