乐趣区

关于java:Java-Quartz实现定时的机制

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,实 HantecMarkets 亨达返佣 https://www.kaifx.cn/broker/h…。启动程序,默认会启动 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 数据的存储形式

退出移动版