Spring-quartz定时任务

原创 2016年08月30日 09:49:23

1、在Maven项目加入quartz的jar包
2、新建spring-quartz.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">  
    <!-- default-autowire="byName" default-lazy-init="false"此两个值可以不配置 -->  
    <description>Quartz Job Setting</description>  
  <!-- A.配置调度的任务对应bean的id和自定义class-->  
  <!-- 每天凌晨4点跑,打包数据成2张图片和一个TXT文件 -->
  <bean id="SendMailQuartz" class="cn.cloudwalk.syeb.core.common.quartz.SendMailQuartz" />  
  <!-- B.配置调度任务对应的bean的id和执行的方法,作业不并发调度-->  
  <bean id="SendMailQuartzMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
    <property name="targetObject" ref="SendMailQuartz" />  
    <property name="targetMethod" value="sendMail" />  
    <property name="concurrent" value="false" />  
  </bean>  
  <!-- C.配置调度任务执行的触发的时间-->  
  <bean id="sendMailTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  <property name="jobDetail" ref="SendMailQuartzMethod" />  
     <property name="cronExpression">  
     <!-- 每15分钟执行任务调度 -->  
     <!--  <value>0 0/15 * * * ?</value> -->
       <!-- 每天凌晨3点执行任务调度 -->  
    <value>0 0 9 * * ?</value>
    </property>  
  </bean>  
  <!-- D.Quartz的调度工厂,调度工厂只能有一个,多个调度任务在list中添加 -->  
  <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
    <property name="triggers">  
      <list>  
         <!-- 所有的调度列表-->  
        <ref bean="sendMailTrigger" />  
      </list>  
    </property>  
  </bean>  
</beans>

3、把spring-quartz.xml引入web.xml

<init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/spring-mvc.xml,classpath:spring/spring-quartz.xml</param-value>
    </init-param>

4、附录邮件发送代码

@RequestMapping(value = "/send")
    public void send(String[] to, String[] cc, String subject, String content) throws MessagingException {
        // 配置发送邮件的环境属性
        final Properties props = new Properties();
        /*
         * 可用的属性: mail.store.protocol / mail.transport.protocol / mail.host /
         * mail.user / mail.from
         */
        // 表示SMTP发送邮件,需要进行身份验证
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", mailSmtpHost);
        // 发件人的账号
        props.put("mail.user", mailUser);
        // 访问SMTP服务时需要提供的密码
        props.put("mail.password", mailPassword);
        //收件人
        props.put("mail.sendTo", sendTo);


        // 构建授权信息,用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名、密码
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };
        // 使用环境属性和授权信息,创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        MimeMessage message = new MimeMessage(mailSession);
        // 设置发件人
        InternetAddress form = new InternetAddress(
                props.getProperty("mail.user"));
        message.setFrom(form);

        // 设置收件人
        String toStr = props.getProperty("mail.sendTo");
        to = toStr.split(",");
        InternetAddress[] sendTo = new InternetAddress[to.length];
        for (int i = 0; i < to.length; i++) {  
            sendTo[i] = new InternetAddress(to[i]);  
        }        
        message.setRecipients(RecipientType.TO, sendTo);

        // 设置抄送
        if(cc!=null && !"".equals(cc)) {
            InternetAddress[] sendCc = new InternetAddress[cc.length];
            for (int i = 0; i < cc.length; i++) {  
                sendCc[i] = new InternetAddress(cc[i]);  
            }        
            message.setRecipients(RecipientType.CC, sendCc);
        }

        // 设置邮件标题
        if(subject!=null && !"".equals(subject)) {
            message.setSubject(subject);
        }

        // 设置邮件的内容体
        if(content!=null && !"".equals(content)) {
            message.setContent(content, "text/html;charset=UTF-8");
        }

        // 发送邮件
        Transport.send(message);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

spring多个定时任务quartz配置

  • 2013年07月25日 13:49
  • 3KB
  • 下载

Spring Boot集成持久化Quartz定时任务管理和界面展示

前言本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充, 其中最大的变化就是后台框架变成了Spring Boot。本工程所用到的技术或工...

Spring整合Quartz定时任务实例

  • 2015年10月10日 16:47
  • 10KB
  • 下载

spring定时任务quartz.jar

  • 2012年11月22日 13:56
  • 398KB
  • 下载

(一)spring3.2.0 quartz-2.2.1 整合 实现动态定时任务 解决service为null问题

spring3.2.0 quartz-2.2.1 实现动态定时任务     spring 和 quartz的整合很简单,但是实现动态定时任务却有一点麻烦,下面详细介绍一下 spring3.2...

spring+quartz定时任务

  • 2016年12月23日 09:41
  • 3KB
  • 下载

Spring整合Quartz实现定时任务调度

一. 核心类 1. Job: 表示一个工作, 具体的业务处理都在这里. 2. JobDetail: 表示一个具体的可执行的调度程序. 3. Trigger: 用于调度参数的配置(什么时候去调用J...
  • zdp072
  • zdp072
  • 2014年08月16日 23:43
  • 1786

Spring quartz1.6.jar(java定时任务)

  • 2008年12月02日 21:13
  • 11.93MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring-quartz定时任务
举报原因:
原因补充:

(最多只允许输入30个字)