A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 专注的一批 中级黑马   /  2020-7-24 17:29  /  1358 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java Quartz实现定时的任务
配置spring

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.2.6.RELEASE</version>
</dependency>
1
2
3
4
5
public class JobFactory extends AdaptableJobFactory {  

    @Autowired  
    private AutowireCapableBeanFactory capableBeanFactory;  

    @Override  
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {  
        //调用父类的方法  
        Object jobInstance = super.createJobInstance(bundle);  
        //进行注入  
        capableBeanFactory.autowireBean(jobInstance);  
        return jobInstance;  
    }  

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<bean id="jobFactory" class="com.vision.job.JobFactory"></bean>  
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="jobFactory" ref="jobFactory"></property>  
    </bean>  
1
2
3
4
搞定,现在我们的job里就可以使用@Autowired自动注入Bean了

那么为什么在job里,@Autowired注解不起作用呢?
这是因为我们在执行job的时候quartz就会重新实例化一个job,这个job和Spring注入的其他实例是不同的,所以@Autowired无法将实现注入到job中。
本课程是系列课程Java定时任务调度工具详解中的Quartz篇,旨在通过详细讲述Java定时调度工具的基本概念、工具,和这些工具里面包含的各个组件之间的关系,以及如何使用这些工具来实现定时调度功能,让学生能够对Java定时调度工具有一个清晰准确的认识。结合一些经典使用场景通过手把手的命令行操作进行教学,使同学们得心用手地使用这些定时调度工具来实现自己想要的功能。讲师实战课程已经上线,从0开始部署项目,掌握SSM和SpringBoot两大主流框架。详解SSM无缝迁移到SPRINGBOOT + MYBATIS的框架转换,远程调试项目并与微信结合,利用阿里SUI,实现前后端的全栈开XM返佣https://www.kaifx.cn/broker/xm.html发。启动程序,默认会启动10个线程,我们可以在配置文件中设置quartz运行的相关属性,在resources目录下新建一个quartz.properties文件,添加

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
再次启动程序,启动的线程就变成3个了,一个配置项为调度器的名称。第三个为设置Quartz数据的存储方式


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马