ApplicaitonContext的额外功能依赖于bean的后置处理器

可以利用监听器完成定时器的开关

// 引入定时器
@EnableScheduling
@SpringBootApplication
public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class);}
}
@Component(value = TaskScheduled.TASK)
public class TaskScheduled {public static final String TASK = "taskScheduled";@Autowiredprivate ApplicationContext applicationContext;private AtomicInteger num = new AtomicInteger(0);@Scheduled(cron = "*/5 * * * * ?")public void task(){System.out.println("doing task...");// 自定义条件,条件满足之后启动或者停止监听器if(num.incrementAndGet() == 3){// 发布任务applicationContext.publishEvent(new DestroyEvent(applicationContext));}}
}

Event:

public class DestroyEvent extends ApplicationEvent {public DestroyEvent(Object object){super(object);}
}

Listener:

@Component
public class DestroyListener implements ApplicationListener<DestroyEvent> {@Overridepublic void onApplicationEvent(DestroyEvent destroyEvent) {Object object = destroyEvent.getSource();if(object instanceof ApplicationContext){//AbstractApplicationContext 实现了 ApplicationContextAbstractApplicationContext ap = (AbstractApplicationContext)object;//DefaultListableBeanFactory 实现了 ConfigurableListableBeanFactoryDefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)ap.getBeanFactory();// 如果工厂中有当前bean就销毁掉if(beanFactory.containsBean(TaskScheduled.TASK)){beanFactory.destroySingleton(TaskScheduled.TASK);}// 可以自定义再创建定时器// beanFactory.createBean(TaskScheduled.class);}}
}

Spring停止或开启定时器相关推荐

  1. spring中配置quartz定时器

    spring中配置quartz定时器 最近项目中用到定时器,项目用的spring所以想在spring中配置一下定时器,看到网上用quartz的比较多,所以就搜了一下.参考:http://blog.cs ...

  2. QT之QTimer详解以及结合多线程中开启定时器的示例

    一 QTimer详解 QTimer类提供了重复和单次触发信号的定时器. a.void timeout ()定时器超时后,这个信号被发射. b.void start()开启定时器,它的重载函数void ...

  3. [转]解决STM32开启定时器时立即进入一次中断程序问题

    [转]解决STM32开启定时器时立即进入一次中断程序问题 参考文章: (1)[转]解决STM32开启定时器时立即进入一次中断程序问题 (2)https://www.cnblogs.com/tubuji ...

  4. mysql开启定时器_MySQL定时器开启、调用实现代码

    创建测试表 复制代码 代码如下: CREATE TABLE t ( v VARCHAR(100) NOT NULL ) ENGINE INNODB DEFAULT CHARSET=utf8; 创建定时 ...

  5. 在Spring中使用JDK定时器实现调度任务

    在Spring中使用JDK定时器实现调度任务 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs 本文探讨Spring如何集成JDK的Timer定时器,实现 ...

  6. STM32开启定时器就立即进Update中断问题探索

    问题描述:意外发现定时器再刚使能后立即就进了中断,且是Update中断,比较奇怪,难道Update中断不是定时器计数溢出后才触发吗?因此写下此文章记录相关情况. 测试平台: STM32F103VET6 ...

  7. spring 自带的定时器task

    一.在spring的配置文件中加入task配置: <?xml version="1.0" encoding="UTF-8"?> <beans ...

  8. vue项目:开启定时器后,1分钟内每5秒调一次接口,请求到数据后,清除定时器

    data() {return {codeTimer: null,//定时器codeTime: 12, // 限制1分钟后没请求到erp数据,不再继续请求};}, //开启定时器 通过codeTime的 ...

  9. Spring注解方式实现定时器

    一.springmvc.xml中添加以下配置 1.beans添加xmlnx:task xmlns:task="http://www.springframework.org/schema/ta ...

最新文章

  1. 【教程】EditPlus+MinGW搭建简易的C/C++开发环境
  2. JPA的entityManager的find方法与getReference方法的区别
  3. Spring Boot动态修改日志级别
  4. qt弹出框自动消失的悬浮提示框_QT【简单自定义弹出提示框】:非模态,数秒后自动消失...
  5. 海龟交易法则14_掌控心魔
  6. 苹果:两个 M1 Max 拼一块儿,“史上最强 PC 芯片”M1 Ultra 就出来了!
  7. IDEA导入Git项目后右键项目找不到Git选项的解决方法
  8. 如果计算机正执行屏幕保护程序 当用户,计算机一级考试参考试题(含答案)篇节一.doc...
  9. 程序员写文档工具推荐,让你爱上写文档!
  10. MATLAB 函数画图
  11. Python中如何求分数化简
  12. qq 能上但是打不开网页
  13. 解决Mybatis报错并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx
  14. 字符串库函数(1)Strlen,strcpy,strcat,strcmp
  15. 使用aspose-slides将ppt转pdf
  16. 终极实践:部署LNMP服务
  17. 3D全景图,全景视频,陀螺仪
  18. python的三维坐标轴设置_如何更改matplotlib中的三维轴设置
  19. android 文件过滤驱动,自己写的Xuetr工具驱动读写过滤驱动,并奉献上源码
  20. 景德镇昌江一中2021年高考成绩查询,刚公布!2020年景德镇市重点高中统招分数线出来了!...

热门文章

  1. 永远不要放弃追逐你的梦想...
  2. 轻项目练习——图书管理代码
  3. Module not found: Error: Can‘t resolve ‘./@/assets/image/folder.png‘
  4. 最小二乘相位解包裹算法
  5. 【*加快Win7系统运行速度的12个小技巧*】
  6. Java反编译插件JODE介绍
  7. fatal: Not a git repository
  8. matlab空间曲线展开,MATLAB曲线绘制的一些技巧和注解
  9. matlab 正弦波发生器,sinwav_simulink matlba的 正弦波发生器,非常简单但很实用的模型 ab 254万源代码下载- www.pudn.com...
  10. OFDM通信系统的仿真