quartz 的简单使用

0.依赖:

<!-- 引入quartz对应的依赖 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.3</version>
        </dependency>

1.配置。

<!-- ******************定时任务quartz配置********************* -->
<!-- 注册自定义作业类 -->
    <bean id="myJob" class="com.shan.bos.service.jobs.MailJob">
        <property name="username" value="lsXXX"/>
        <property name="password" value="lXXX"/>
        <property name="smtpServer" value="XX.com"/>
    </bean>

    <!-- 配置JobDetail -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 注入目标对象 即目标类 -->
        <property name="targetObject" ref="myJob"/>
        <!-- 注入目标方法 -->
        <property name="targetMethod" value="execute"/>
    </bean>

    <!-- 配置触发器 -->
    <bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!-- 注入任务详情对象 -->
        <property name="jobDetail" ref="jobDetail"/>
        <!-- 注入cron表达式,通过这个表达式指定触发的时间点 -->
        <property name="cronExpression">
            <value>0/10 * * * * ? 2019</value>
        </property>
    </bean>

    <!-- 配置调度工厂 -->
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <!-- 注入触发器 -->
        <property name="triggers">
            <list>
                <ref bean="myTrigger"/>
            </list>
        </property>
    </bean>

2. 定时的任务

package com.shan.bos.service.jobs;

import java.util.List;
import java.util.Properties;

import javax.annotation.Resource;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.shan.bos.dao.IWorkbillDao;
import com.shan.bos.domain.Workbill;

/**
 * 发送邮件的作业
 * @author Sea
 *
 */
public class MailJob {
    @Resource
    private IWorkbillDao workbillDao;

    private String username;
    private String password;
    private String smtpServer;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void execute() {
        System.out.println("要发邮件了。。。");
        try {
            //查询工单类型为新单的所有工单
            List<Workbill> list = workbillDao.findAll();
            System.out.println(list.get(0).toString());
            if(null != list && list.size() > 0){
                final Properties mailProps = new Properties();
                mailProps.put("mail.smtp.host", this.getSmtpServer());
                mailProps.put("mail.smtp.auth", "true");
                mailProps.put("mail.username", this.getUsername());
                mailProps.put("mail.password", this.getPassword());

                // 构建授权信息,用于进行SMTP进行身份验证
                Authenticator authenticator = new Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        // 用户名、密码
                        String userName = mailProps.getProperty("mail.username");
                        String password = mailProps.getProperty("mail.password");
                        return new PasswordAuthentication(userName, password);
                    }
                };
                // 使用环境属性和授权信息,创建邮件会话
                Session mailSession = Session.getInstance(mailProps, authenticator);
                for(Workbill workbill : list){
                    // 创建邮件消息
                    MimeMessage message = new MimeMessage(mailSession);
                    // 设置发件人
                    InternetAddress from = new InternetAddress(mailProps.getProperty("mail.username"));
                    message.setFrom(from);
                    // 设置收件人
                    InternetAddress to = new InternetAddress("[email protected]");
                    message.setRecipient(RecipientType.TO, to);
                    // 设置邮件标题
                    message.setSubject("系统邮件:新单通知");
                    // 设置邮件的内容体
                    message.setContent(workbill.toString(), "text/html;charset=UTF-8");
                    // 发送邮件
                    Transport.send(message);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public String getSmtpServer() {
        return smtpServer;
    }

    public void setSmtpServer(String smtpServer) {
        this.smtpServer = smtpServer;
    }
}

原文地址:https://www.cnblogs.com/lshan/p/9164846.html

时间: 2024-08-29 13:04:44

quartz 的简单使用的相关文章

【Quartz】Quartz的简单搭建

Quartz在Java构建的系统中,是十分常用的定时任务框架. 本文,记录.介绍Quartz的简单入门的单独搭建(此文入门学习Quartz为主,并非基于Spring托管形式). > 参考的优秀资料 Quartz Quick Start Guide Chapter 3: Logback configuration > 版本说明 除了Quartz,还引入logback(为了看详细的日志嘛!) <dependencies> <dependency> <groupId&g

基于Quartz实现简单的定时发送邮件

一.什么是Quartz Quartz 是一个轻量级任务调度框架,只需要做些简单的配置就可以使用:它可以支持持久化的任务存储,即使是任务中断或服务重启后,仍可以继续运行.Quartz既可以做为独立的应用提供服务,也可以和其他应用集成一起使用. 核心概念: 1.Job 表示一个工作,要执行的具体内容.此接口中只有一个方法 void execute(JobExecutionContext context) 2.JobDetail JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调

Quartz的简单使用,基于1.X(一)【入门及CronTrigger】

 什么是Quartz Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制.Quartz允许开发人员根据时间间隔来调度作业.它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联.简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法:     public void execute(JobExecutionContext context) throws JobExecutionExceptio

C#中Quartz的简单易懂定时任务实现

作为一个优秀的开源调度框架,Quartz 具有以下特点: 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求: 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式: 分布式和集群能力,Terracotta 收购后在原来功能基础上作了进一步提升. 另外,作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成实现灵活可配置的调度功能. quartz调度核心元素: Scheduler:任务调度器,是实际执行任务调度的控制器.在spr

iOS开发——图形编程OC篇&amp;(四)Quartz 2D简单使用

Quartz2D简单使用 一.画直线 代码: 1 // 2 // YYlineview.m 3 // 03-画直线 4 // 5 // Created by apple on 14-6-9. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYlineview.h" 10 11 @implementation YYlineview 12 13 14 // 当自定义view第一次显示出来的时候

Quartz(1)--简单示例

Quartz 是一个企业级调度工作的框架,帮助Java应用程序到调度工作/任务在指定的日期和时间运行,本文的Quartz版本为2.2.1. 1. Quartz 作业 job Quartz作业定义要运行什么,实现Job接口中的execute方法 package com.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; publi

Quartz 2D简单的绘图

利用CG框架绘图的步骤: 1.子类化UIView 2.在GraphicView中复写drawRect方法 3.获取图形上下文对象 4.绘制线条 (1)先创建一个路径,把线条定义在这个路径上,再把路径交给context去显示. (2)直接把线条绘制到context上去. 5.绘制简单图形 6.绘制文本 10. 7.绘制图像 12.- (void)drawRect:(CGRect)rect { 13. //1.获取图形上下文 CGContextRef context = UIGraphicsGetC

Quartz.Net简单使用

Quartz.Net为开源的作业调度框架,使用方便,实现IJob接口,及相关配置,即可实现调度. 项目包安装: install-package Quartz install-package log4net install-package Common.Logging.Log4Net1211(最新版为Common.Logging.Log4Net1213,但会出现"Unable to create instance of type Common.Logging.Log4Net.Log4NetLogg

任务调度框架-Quartz.Net

使用Quartz.Net依赖于以下3个组件:Common.Logging.dll.Common.Logging.Core.dll.Quartz.dll 简单封装 1 using Quartz; 2 using Quartz.Impl; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 9 na