定时器注入spring
撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>
ApplicationContextUtil.java
package org.job;import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;/*** Created with IntelliJ IDEA.定时器的执行优先于注入 所以需要创建一个类,用来获取service* User: vincent* Date: 2017/11/8* Time: 15:39*/
public class ApplicationContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;public static ApplicationContext getApplicationContext() {return applicationContext;}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {ApplicationContextUtil.applicationContext = applicationContext;}public static Object getBean(String beanName){return applicationContext.getBean(beanName);}}
JobFactory.java
package org.job;import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Created with IntelliJ IDEA.* User: vincent* Date: 2017/10/30* Time: 17:00*/
@Configuration
public class JobFactory {@Bean(name = "jobScheduler")public Scheduler getScheduler() {SchedulerFactory schedulerfactory = new StdSchedulerFactory();Scheduler scheduler = null;try {scheduler = schedulerfactory.getScheduler();} catch (Exception e) {e.printStackTrace();}return scheduler;}}
PersonService.java
@Service("pointService")
public class PointServiceImpl implements PointService {@AutowiredPersonDao personDao;public getPersonList(){doSometing();}}
MyJob.java
@DisallowConcurrentExecution
public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {//System.out.println(DateHelper2.getCurrentDateTimeFormat());try {Thread.sleep(2000);PointService pointService = (PersonService)ApplicationContextUtil.getBean("personService");System.out.println(personService);personService.updateGlobalPointValue1();} catch (InterruptedException e) {e.printStackTrace();}}public MyJob() {}
}
JobServiceImpl.java
package org.taian.service.impl;import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.taian.service.JobService;import java.util.List;/*** Created with IntelliJ IDEA.* User: vincent* Date: 2017/11/9* Time: 14:15*/
@Service
public class JobServiceImpl implements JobService {@Autowired@Qualifier("jobScheduler")private Scheduler scheduler;@Overridepublic void doJob() {//触发器JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "jgroup1").build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup").withSchedule(CronScheduleBuilder.cronSchedule("1-30 * * * * ? *")).startNow().build();try {//把作业和触发器注册到任务调度中scheduler.scheduleJob(job, trigger);//启动调度scheduler.start();Thread.sleep(5000);List<JobExecutionContext> currentlyExecutingJobs = scheduler.getCurrentlyExecutingJobs();System.out.println(currentlyExecutingJobs.size());for (JobExecutionContext jobExecutionContext:currentlyExecutingJobs){System.out.println(jobExecutionContext.getJobDetail().getKey());}} catch (Exception e) {e.printStackTrace();}}
}
controller.java
@ResponseBody@RequestMapping(value = "doQuartz", method = RequestMethod.GET)public String doQuartz(){jobService.doJob();return "a";}
定时器注入spring相关推荐
- Servlet自动注入Spring容器中的Bean解决方法
Servlet自动注入Spring容器中的Bean解决方法 参考文章: (1)Servlet自动注入Spring容器中的Bean解决方法 (2)https://www.cnblogs.com/jank ...
- 将经过身份验证的用户注入Spring MVC @Controllers
可以使用@AuthenticationPrincipal批注和AuthenticationPrincipalArgumentResolver这是Spring MVS MethodArgumentRes ...
- spring注入普通java类_普通java类如何取得注入spring Ioc容器的对象
[除了使用XML配置外,还可以选择使用基于注解(annotation)的配置方式,其依赖于字节码来织入组件.注解注入在XML注入之前完成,因此在XML配置中可以重载注解注入的属性. 一.建一个Spri ...
- Quartz业务类无法注入Spring对象问题
tags: 解决错误, titile: Quartz业务类无法注入Spring对象问题 Quartz业务类无法注入Spring对象问题 在刚开始遇到的时候还以为是Spring配置哪里错误了,结果搞了那 ...
- strtus中action注入spring bean
Action 中注入Spring 管理的Bean ProductAction 是一个 Action,处理页面的请求,其中的save()方法使用到了业务层 ProductService对象,Spring ...
- 解决无法注入spring容器,获取不到spring容器中的bean问题
解决无法注入spring容器,获取不到spring容器中的bean问题 前两天工作中遇到一个问题,收到的需求是根据logbak日志实现通过过滤错误日志发送预警邮件到邮箱,logback自定义实现类如下 ...
- 关于mapper接口注入spring容器
mapper是接口,而接口时不能注入spring容器的,要注入就需要接口有对应的实现类,注入的应该是实现类而不是接口 而在spring中,导入MyBatis-Spring包之后,MyBatis-Spr ...
- 在不受Spring管理的类中注入spring 管理的对象
前几天在做一个任务时,需要在一个普通的java类(不受Spring管理的类)中,调用 spring data jpa的某个xxxReponsitory 接口,同时需要读取properties 文件中的 ...
- java定时器、Spring定时器和Quartz定时器
当前java程序中能够实现定时的主要有三种方式,分别是:java定时器,spring定时器,quartz定时器. 下面依次讲讲他们的应用! java定时器的应用 其实java很早就有解决定时器任 ...
最新文章
- NLP研究索引神器,3000+代码库,一键查找论文、GitHub库
- 开发完成的springboot项目扩展 swagger
- 《淘宝店铺装修与促销设计宝典》一6.1 设计全面的店铺客服区
- 【消息队列】kafka是如何保证消息不被重复消费的
- 广州技术沙龙第 4 期报名开始!
- [html] 使用div+css进行布局有什么好处?
- 在html中用表单插入servlet 怎么写servlet的地址,java web中servlet、jsp、html 互相访问的路径问题。...
- 使用ubuntu系统中遇到的问题及解决方案
- linux判断值相等_Shell字符串比较相等、不相等方法小结【转】
- 如何动态修改select的值_SQL成长记录02-SELECT语句
- Installshield停止操作系统进程的代码 --IS6及以上版本适用
- 计算机网络课程设计个人总结,计算机网络课程设计心得体会.doc
- Matlab将散点绘制为平滑曲线的简单方法
- 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍
- win10的WLAN/Wifi不见了、网络适配器黄色感叹号、网络中心的更改适配器选项没有连接
- 无线路由器如何建立ftp服务器,利用无线路由器建立FTP服务器
- Java 性能优化之——缓冲区如何让代码加速
- python 智能识别 商品_python人工智能-图像识别
- Open Inventor 10.11.1 Crack
- SUSE Linux Enterprise助力企业数字化转型
热门文章
- Flex学习记录(一)——MXML基本知识
- Dojo-API介绍
- YOLO系列算法精讲:从yolov1至yolov4的进阶之路(呕心沥血2万字超全整理,建议收藏!)
- 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构
- Go使用HTTPClient发送Get Post请求
- Linux的Configure详情
- composer 完整路径才能访问_一份完整的运营方案策划思路,拿走不谢(精华版)
- Mac下SourceTree导出更新文件
- qtcreator 自动进入反汇编_1.2 Qt Creator简介
- laravel+php+支付功能,laravel+微信支付源码