SchedulerFactoryBean+AdaptableJobFactory+QuartzJobBean

  1. package schedule.quartz5;
  2. import org.quartz.Scheduler;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.scheduling.quartz.SchedulerFactoryBean;
  7. //Spring与Quartz集成使用的是SchedulerFactoryBean这个类
  8. @Configuration
  9. public class QuartzConfig {
  10. // @Autowired
  11. // private TaskSchedulerFactory taskSchedulerFactory;
  12. // @Bean
  13. // public SchedulerFactoryBean schedulerFactoryBean() {
  14. // SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
  15. // schedulerFactoryBean.setJobFactory(taskSchedulerFactory);
  16. // return schedulerFactoryBean;
  17. // }
  18. // 注入scheduler到spring,在quartzManege会用到
  19. @Bean(name = "scheduler")
  20. public Scheduler scheduler(TaskSchedulerFactory quartzJobFactory) throws Exception {
  21. SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
  22. factoryBean.setJobFactory(quartzJobFactory);
  23. factoryBean.afterPropertiesSet();
  24. Scheduler scheduler = factoryBean.getScheduler();
  25. scheduler.start();
  26. return scheduler;
  27. }
  28. }
  1. package schedule.quartz5;
  2. import org.quartz.spi.TriggerFiredBundle;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
  5. import org.springframework.scheduling.quartz.AdaptableJobFactory;
  6. import org.springframework.stereotype.Component;
  7. @Component("taskSchedulerFactory")
  8. public class TaskSchedulerFactory extends AdaptableJobFactory {
  9. @Autowired
  10. private AutowireCapableBeanFactory capableBeanFactory;
  11. protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception
  12. {
  13. // 首先,调用父类的方法创建好Quartz所需的Job实例
  14. Object jobInstance = super.createJobInstance(bundle);
  15. // 然后,使用BeanFactory为创建好的Job实例进行属性自动装配并将其纳入到Spring容器的管理之中,属于Spring的技术范畴.
  16. capableBeanFactory.autowireBean(jobInstance);
  17. return jobInstance;
  18. }
  19. }
  1. package schedule.quartz5;
  2. import javax.annotation.Resource;
  3. import org.quartz.JobExecutionContext;
  4. import org.quartz.JobExecutionException;
  5. import org.quartz.impl.triggers.CronTriggerImpl;
  6. import org.quartz.impl.triggers.SimpleTriggerImpl;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.scheduling.quartz.QuartzJobBean;
  10. import org.springframework.stereotype.Component;
  11. @Component
  12. public class ProcessJob extends QuartzJobBean {
  13. @Resource
  14. private SayService sayService;
  15. private Logger logger = LoggerFactory.getLogger(ProcessJob.class);
  16. @Override
  17. protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
  18. try {
  19. sayService.sayHello();
  20. if(context.getTrigger() instanceof CronTriggerImpl){
  21. CronTriggerImpl xxx = ((CronTriggerImpl)context.getTrigger());
  22. logger.info("动态定时调度测试 job group:"+xxx.getJobGroup()+", job name:"+xxx.getJobName() +", trigger group:"+xxx.getGroup()+", trigger name:"+xxx.getName()+", cronExpression "+xxx.getCronExpression());
  23. }else if(context.getTrigger() instanceof SimpleTriggerImpl){
  24. SimpleTriggerImpl xxx = ((SimpleTriggerImpl)context.getTrigger());
  25. logger.info("动态定时调度测试 job group:"+xxx.getJobGroup()+", job name:"+xxx.getJobName() +", trigger group:"+xxx.getGroup()+", trigger name:"+xxx.getName()+", cronExpression "+xxx);
  26. }
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. }
  1.  
  2.  

java.lang.NoSuchMethodError

org.springframework.util.ReflectionUtils.accessibleConstructor(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;

一般是引入了两个重复的spring Jar包,如既引入了spring.framework 又引入了spring.core,去掉一个就好

用tree方式查看

spring quartz 任务注入spring service的更多相关文章

  1. 在非spring组件中注入spring bean

    1.在spring中配置如下<context:spring-configured/>     <context:load-time-weaver aspectj-weaving=&q ...

  2. 如何在静态方法或非Spring Bean中注入Spring Bean

           在项目中有时需要根据需要在自己new一个对象,或者在某些util方法或属性中获取Spring Bean对象,从而完成某些工作,但是由于自己new的对象和util方法并不是受Spring所 ...

  3. service手动实例化(new)导致类中的spring对象无法注入的问题解决

    下面说的这个画横线的可能是错误的,因为我之前用controller继承父类的注解对象的时候成功了,所以可能这次的唯一原因就是 不该把本该从ioc容器中拿出的对象通过new的方式实例化,至于继承注解对象 ...

  4. Spring+quartz 实现定时任务job集群配置

    为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...

  5. 关于spring的自动注入

    关于spring的自动注入 spring里面可以设置BeanDefinition自动注入类型,默认为AUTOWIRE_NO(不进行自动注入).mybatis里面的扫描接口生成MapperFactory ...

  6. Spring+quartz 实现定时任务job集群配置【原】

    为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...

  7. 【spring】69道Spring面试题和答案

    原文地址:http://ifeve.com/spring-interview-questions-and-answers/ 目录 Spring 概述 依赖注入 Spring beans Spring注 ...

  8. Spring quartz定时任务service注入问题

    今天想单元测试一下spring中的quartz定时任务,job类的大致结构和下面的SpringQtz1类相似,我的是实现的org.quartz.Job接口,到最后总是发现job类里注入的service ...

  9. 解决Spring+Quartz无法自动注入bean问题

    问题 我们有时需要执行一些定时任务(如数据批处理),比较常用的技术框架有Spring + Quartz中.无奈此方式有个问题:Spring Bean无法自动注入. 环境:Spring3.2.2 + Q ...

随机推荐

  1. benthos 通过rest api 配置 stream 说明

    stream 模式,我们可以通过rest api 进行控制 使用方法 启动 benthos --streams 进行流的配置(rest api) curl http://localhost:4195/ ...

  2. php实现cookie加密解密

    1.加密解密类 class Mcrypt { /** * 解密 * * @param string $encryptedText 已加密字符串 * @param string $key 密钥 * @r ...

  3. 可视化mark

    待尝试研究的可视化组件及产品: 开源组件 商业组件 开源组件 zeppelin Caravel D3.js Flare talend(ETL) pentaho spagoBI NanoCubs Dyg ...

  4. 常用Web框架

    1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范,是写 CSS 的更好方式. git ...

  5. BASIC-26_蓝桥杯_报时助手

    示例代码: #include <stdio.h> void print(int x) { switch(x) { : printf("zero ");break; : ...

  6. 神奇的null和undefined

    在JavaScript中,有两个特殊的类型存在,它们都只有一个值,分别null和undefined,之所以将它们放在一块,是因为在使用方面它们有很多相似之处. 相同点 在JavaScript中,nul ...

  7. Java-Runoob-高级教程-实例-数组:07. Java 实例 – 数组合并

    ylbtech-Java-Runoob-高级教程-实例-数组:07. Java 实例 – 数组合并 1.返回顶部 1. Java 实例 - 数组合并  Java 实例 以下实例演示了如何通过 List ...

  8. [转]NSIS:使用SectionSetFlags根据不同环境自动勾选特定区段

    转自: http://www.flighty.cn/html/bushu/20140526_232.html   在微软SQL2000+SP4集成安装版安装包中可以根据目标操作系统自动勾选对应的版本, ...

  9. [UE4]acotor放置4*4列表

    // Number of blocks const int32 NumBlocks = Size * Size; // Loop to spawn each block ; BlockIndex< ...

  10. CentOS所有版本下载地址分享

    简述 CentOS(Community Enterprise Operating System - 社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux ...