微信公众号的SpringBoot+Quartz的定时任务Demo




SpringBoot整合quartz并不难,难在普通类实现了Job接口后等于实例化交给quartz,不受Spring管理,则service层等等其他依赖的注入将无法注入,这也是难点之一。
    解决方法:
    @Component
public class MyJobFactory extends AdaptableJobFactory {
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;

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

以上可以解决quartz的job无法注入的依赖而导致空指针的异常。
另外job类我们可以写一个逻辑方法将灵活的调用我们的定时任务。

//第一个参数是要实现调度的类,第二个是执行的时间。第三个是传递的参数
public interface QuartzService {
    Map<String,Object> eventSetSuccess(Class <? extends Job> klass, Date date, NoticeDTO noticeDTO) throws SchedulerException;
}

以下是需要调用的类:(这样可以根据您的喜好只需要将相关的依赖和数值传进来就可以很方便的调用)

public class QuartEventDemo implements Job,Serializable{   //只需建立一个类,然后将需要做的事注入进来就行
    private NoticeDTO noticeDTO = new NoticeDTO();
    @Autowired
    private PushMessageService pushMessageService;  //注入失败?(已搞定)
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        JobDataMap jobDetail =  jobExecutionContext.getTrigger().getJobDataMap();
        String openid = (String) jobDetail.get("openid");
        String createTime = (String) jobDetail.get("createTime");
        String endTime = (String) jobDetail.get("endTime");
        String eventContent = (String) jobDetail.get("eventContent");
        try {
            noticeDTO.setCreateTime(format.parse(createTime));
            noticeDTO.setEndTime(format.parse(endTime));
        }catch (Exception e){
            e.printStackTrace();
        }
        noticeDTO.setOpenid(openid);
        noticeDTO.setEventContent(eventContent);
        log.info("【传值是否成功】noticeDTO={}",noticeDTO);
        pushMessageService.noiteEvent(noticeDTO);
    }
}

配置文件:

server:
    context-path: /quartzDemo
    port: 80
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/meetingsign?useUnicode=true&characterEncoding=utf8
    username: root
    password: ******
  jpa:
    hibernate:
      ddl-auto: update
      show-sql: true
wechat:
   mpAppId: *******微信公众号的mpAppId
   mpAppSecret:********微信公众号的mpAppSecret
quartzDemo:
   quartz:这个是填写项目的域名

作者:
链接:http://www.imooc.com/article/20532
来源:慕课网

原文地址:https://www.cnblogs.com/yhtboke/p/9267970.html

时间: 2024-08-30 05:34:09

微信公众号的SpringBoot+Quartz的定时任务Demo的相关文章

微信公众号 扫码支付 模式二 demo

扫码支付 本文附有代码,在下方,如果不熟悉场景的可以看看下面的场景介绍 场景介绍 官网介绍地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 用户扫描商户展示在各种场景的二维码进行支付. 步骤1:商户根据微信支付的规则,为不同商品生成不同的二维码(如图6.1),展示在各种场景,用于用户扫描购买. 步骤2:用户使用微信"扫一扫"(如图6.2)扫描二维码后,获取商品支付信息,引导用户完成支付(如图6.3). 图6

微信公众号开发纪要(4)-调用微信扫一扫功能

在微信公众号页面中调用微信扫一扫功能,就是调用微信JS-SDK.让JS-SDK完成调用摄像头扫描,然后我们将扫描结果进行业务操作.微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验.如何调用微信JS-SDK,在微信公众平台技术文档中的微信网页开发-->微信JS-SDK说明文档中有详细

【就是打折网】一个网站+微信公众号上线的过程----概要

忙活了半个月,公众号终于可以发布上线部分功能了,回顾下这段时间的过程,简单记录下,看能否给后人有个帮助 起因: 现在基本上都是网上购物比较多,主要是在淘宝天猫.前段时间,老婆大人看到别人使用淘宝的优惠券,有些美名为:内部优惠券,某些商品确实可以通过优惠券购买少不少钱. 遂了解下,确实是有优惠券这东西,还有很多优惠券在淘宝天猫的商品信息或者店铺信息中根本就无法找到. 再深入了解,网上搜索了下,现在优惠券的模式基本上都是通过加群(QQ群或者微信群),通过机器人自动发放优惠券信息,由群友自己去领,有些

2018最新程序员必备技术类微信公众号

这篇文章推荐了包括技术.设计和极客相关的热门公众号. 技术类 业余草 微信号:yyucao 「业余草」是一个关注互联网及IT技术发展的独立个人博客,记录自己在学习和工作中的经验,面向开发者的知识分享深度IT技术博客,一个IT爱好者学习交流平台.投稿请发至[email protected]. 「业余草」公众号设计的技术包括:java,go,数据库,redis,springcloud,springboot,mongodb,linux等知识,更重要的是还有很多免费的视频教程可以下载.包含:数据库的My

微信公众号网页授权登录获取用户基本信息

发布时间:2018-10-24 技术:spring springboot,微信公众号 概述 微信公众号网页授权登录后微信获取用户基本信息,部署即可运行完整demo 详细 代码下载:http://www.demodashi.com/demo/14290.html 一.前言 (1)适合人群 1,JAVA服务端开发人员 2,初级人员开发人员 3,了解spring springboot + maven 3,了解公众号开发 (2)你需要准备什么? 1,积极主动学习 2,微信公众号开发基本流程 3,java

java 扫描微信公众号二维码,关注并登录逻辑

场景:户扫描微信公众号的二维码,关注后自动登录网站,若已关注则直接登录. 逻辑: 系统生成带参数的临时二维码:参数 scene_str 自定义为唯一值(可以是uuid),临时二维码的生成方式参照官方接口的开发文档 用户使用微信扫描该二维码,关注后微信服务器会将关注事件的响应数据返回给我们的应用服务器:微信通过我们在公众号配置的“服务器地址(URL)”,将响应数据返回给我们的应用服务器,响应数据包括 参数 scene_str 和 openid 应用服务器将接收到的openid再次向微信服务器发起请

Java对接微信公众号模板消息推送

内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 不过请注意这一点 ok,我们继续:再来完成公众号的基本配置: 服务器地址(URL):必须以http://或https://开头,分别支持80端口和443端口.这个URL是很重要的,需要响应微信发送的token验证 令牌(To

SpringCloud : 接入 微信公众号平台(一)、接入微信请求(支持多公众号)

Maven: Feign 版本10.1.0 Spring 版本 5.1.5.RELEASE SpringBoot 版本 2.1.5.RELEASE SpringCloud 版本 2.1.1.RELEASE Weixin-java 版本 3.7.0,链接 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.6

微信公众号可通过现金红包接口发放微信支付现金红包(附开发教程)

农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守.昨日,微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包.微信公众号也可以发放现金红包了! 通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果. 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领