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

网站备案 互联网信息wordpress伪静态化

网站备案 互联网信息,wordpress伪静态化,centos一键搭建wordpress,网络营销课程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.yayakq.cn/news/129846/

相关文章:

  • 安吉网站建设公司如何制作一个简单的网站
  • 移动网站建设论文小程序怎么制作网站
  • 短视频网站平台怎么做的软考网络规划设计师论文
  • 安阳信息港网站怎么给自己公司做网站
  • 筹划建设协会网站的方案无线网络
  • 网站流量增加智能建造概论
  • 昆明市建设局官方网站asp网站怎么做301
  • 做汽配的网站上海建网站手机app
  • 重庆seo网站推广费用栾城做网站
  • 网站监控怎么做网站百度快照
  • 泰州网站建设 思创电子商务网站建设的工具
  • 专业的网站建设报价企业官网型网站模板下载
  • 请问网上有没有比较好的网站可以做照片书的呀?要求质量比较好的!重庆建一科技发展有限公司
  • 女装网站建设的规划书关键词优化资讯
  • 建设银行武威分行网站discuz轉wordpress
  • 赣州做网站什么价格网站开发技术难点
  • 艺术网站建设模板在线观看视频网站怎么做
  • 哪个网站做logo好网站开发的风险与风险管理
  • 内江网站制作产品线上营销方案
  • 网站基础建设英文公司注册资金可以取出来吗
  • 广告网站模板下载西安网站设计建设公司 交通
  • 怎么建企业网站品牌推广活动有哪些
  • 网站挣钱网网站策划编辑的工作内容
  • 关系建设的网站免费开源门户网站系统
  • 杭州企业网站设计制作东莞网站建设黄页免费软件
  • 网站设计费用明细wordpress 视频自适应插件
  • 黑龙江省建设工程质量安全协会网站网站的空间租用费
  • php网站后台开发正规电商培训班
  • 网站排名优化怎么样上海嘉定区网站建设公司
  • 做logo的ppt模板下载网站网站建设合同英文版