spring + quartz 定时

springConfig配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory"
            ref="entityManagerFactory" />
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 启用支持Annotation注解方式的事务管理 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    <!-- 把标记了@Controller等注解的类转换为bean -->
    <context:component-scan base-package="com.qdshop" />

    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />    -->
    <!--文件上传设置-->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize">
            <value>10485760</value><!-- 文件上传最大为10M -->
        </property>
        <property name="maxInMemorySize" value="4096" />
    </bean>
    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean id="velocityCongfig"
        class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath">
            <value>/</value>
        </property>
        <property name="velocityProperties">
            <props>
                <prop key="input.encoding">UTF-8</prop>
                <prop key="output.encoding ">UTF-8</prop>
            </props>
        </property>
    </bean>
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.velocity.VelocityView" />
        <property name="contentType">
            <value>text/html;charset=UTF-8</value>
        </property>
    </bean>
    <!-- property-placeholder是一个属性遍历器,定位一个属性文件,属性文件存放的是jdbc一些连接数据 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    <!--配置velocity engine默认路径-->
    <bean id="velocityEngine"
        class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
        <property name="resourceLoaderPath" value="/velocity/"></property>
    </bean>
    <!-- 配置数据源 -->
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${driverClassName}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="initialSize" value="${initialSize}" />
        <property name="maxActive" value="${maxActive}" />
        <property name="maxIdle" value="${maxIdle}" />
        <property name="minIdle" value="${minIdle}" />
    </bean>
    <bean name="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceXmlLocation"
            value="classpath:persistence.xml" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter">
            <bean
                class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="database" value="MYSQL" />
                <property name="showSql" value="true" />
                <property name="generateDdl" value="false" />
            </bean>
        </property>
        <property name="jpaProperties">
            <props>
                <!-- 自定义方言 -->
                <prop key="hibernate.dialect">
                    com.qdshop.core.dialect.SystemMySQL5Dialect
                </prop>
                <!-- 二级缓存配置 -->
                <prop key="hibernate.cache.provider_class">
                    net.sf.ehcache.hibernate.SingletonEhCacheProvider
                </prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>
                <prop key="hibernate.cache.use_second_level_cache">
                    true
                </prop>
                <prop key="hibernate.use_sql_comments">false</prop>
                <prop key="hibernate.format_sql">false</prop>
                <prop key="hibernate.generate_statistics">true</prop>
            </props>
        </property>
    </bean>
    <!-- 定义了与实体相关的dao -->
    <bean id="genericEntityDao"
        class="com.qdshop.core.base.GenericEntityDao" scope="prototype"
        lazy-init="true">
        <property name="entityManagerFactory"
            ref="entityManagerFactory" />
    </bean>
    <!--使用泛型DAO作为抽象基类 abstract="true"   -->
    <bean id="genericDAO" class="com.qdshop.core.base.GenericDAO"
        abstract="true" depends-on="genericEntityDao">
        <property name="geDao">
            <ref bean="genericEntityDao" />
        </property>
    </bean>
    <!-- 系统调度控制器 -->
    <bean id="statTask"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject" ref="shop_stat" />
        <!-- 调用类中的方法 -->
        <property name="targetMethod" value="execute" />
        <property name="concurrent" value="false" />
    </bean>
    <bean id="stat_cronTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="statTask" />
        <property name="cronExpression" value="0 */30 * * * ?" />
    </bean>
    <bean id="jobTask"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject" ref="shop_job" />
        <!-- 调用类中的方法 -->
        <property name="targetMethod" value="execute" />
        <property name="concurrent" value="false" />
    </bean>
    <bean id="job_cronTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobTask" />
        <property name="cronExpression" value="1 0 0 * * ?" />
    </bean>
    <bean id="orderJobTask"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject" ref="order_job" />
        <!-- 调用类中的方法 -->
        <property name="targetMethod" value="execute" />
        <property name="concurrent" value="false" />
    </bean>
    <bean id="orderJob_cronTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="orderJobTask" />
        <property name="cronExpression" value="0/10 * * * * ?" />
    </bean>
    <bean id="schdulerFactory" lazy-init="false"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="stat_cronTrigger" />
                <ref bean="job_cronTrigger" />
                <ref bean="orderJob_cronTrigger" />
            </list>
        </property>
    </bean>
    <bean id="sensitiveWordInitUtil" class ="com.qdshop.sensitive.util.SensitiveWordInitUtil" scope="singleton" init-method="initKeyWord">
        <property name="xmlFile">
            <value>classpath:sensitive-word.xml</value>
        </property>
    </bean>
    <!-- Loads MongoDB configuraton -->
    <import resource="mongo-config.xml"/>
</beans>

定时执行类

package com.qdshop.manage.timer;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.zookeeper.Op.Delete;
import org.hibernate.annotations.Where;
import org.hibernate.sql.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.qdshop.core.tools.CommUtil;
import com.qdshop.foundation.domain.ApplyRefund;
import com.qdshop.foundation.domain.Complaint;
import com.qdshop.foundation.domain.Evaluate;
import com.qdshop.foundation.domain.OrderForm;
import com.qdshop.foundation.domain.OrderFormLogBean;
import com.qdshop.foundation.domain.Quartz;
import com.qdshop.foundation.domain.User;
import com.qdshop.foundation.service.IApplyRefundService;
import com.qdshop.foundation.service.IComplaintService;
import com.qdshop.foundation.service.IEvaluateService;
import com.qdshop.foundation.service.IOrderFormLogService;
import com.qdshop.foundation.service.IOrderFormService;
import com.qdshop.foundation.service.IQuartzService;
import com.qdshop.foundation.service.ISysConfigService;
import com.qdshop.foundation.service.ITemplateService;
import com.qdshop.foundation.service.IUserService;
import com.qdshop.manage.admin.tools.MsgTools;
import com.sun.org.apache.xpath.internal.operations.And;

/**
* @ClassName: OrderJobManageAction
* @Description: 订单相关定时任务
* @author
* @date 2016-5-7 下午5:45:43
*
*/
@SuppressWarnings({"rawtypes","unchecked","unused"})
@Component("order_job")
public class OrderJobManageAction {
    @Autowired
    private ISysConfigService configService;

    //投诉接口
    @Autowired
    private IComplaintService complaintService;

     @Autowired
     private MsgTools msgTools;

    public void execute() throws Exception{
         Calendar cal = null;
         Map params = new HashMap();
         List<Quartz> quartzs=new ArrayList<Quartz>();
         List<ApplyRefund> applyRefunds=new ArrayList<ApplyRefund>();
         /**订单超过X天未付款,自动取消**/
         int auto_order_cancel = this.configService.getSysConfig().getAuto_order_cancel();
                cal = Calendar.getInstance();
                params.clear();
                cal.add(6, -auto_order_cancel);
                params.put("order_time", cal.getTime());
                params.put("order_status", Integer.valueOf(1));//未付款
                List<OrderForm> cancel_ofs = this.orderFormService
                        .query("select obj from OrderForm obj where obj.order_time<=:order_time and obj.order_status=:order_status", params, -1, -1);
                for (OrderForm of : cancel_ofs){
                    //订单取消
                    of.setOrder_status(10);
                    this.orderFormService.update(of);
                }

    }

       /**
        *
        * 功能描述:根据传入name,查询出value值
        * 创建人:
        * 创建日期:2016年7月28日
        * @param name
        * @return
        */
       private List<Quartz> getQuartzList(String name){
           Map map = new HashMap();
           map.put("name", name);//取确认订单值
           List<Quartz> quartzs=this.quartzService.query("select obj from Quartz obj where obj.name=:name", map, -1, -1);
           return quartzs;
       }

}

时间: 2024-10-10 01:32:31

spring + quartz 定时的相关文章

Spring—Quartz定时调度CronTrigger时间配置格式说明与实例

1 .CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W 5 月 是 1-12 or JAN-DEC , - * / 6 周 是 1-7 or SUN-SAT , - * ? / L # 7 年

Spring—Quartz定时调度CronTrigger时间配置格式的实例

格式说明:[秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W 5 月 是 1-12 or JAN-DEC , - * / 6 周 是 1-7 or SUN-SAT , - * ? / L # 7 年 否 empty 或 1970-2099 , - * / 通配符说明: * :表

Spring整合Quartz定时发送邮件

功能描述:刚开始接触Quartz,试着用Quartz整合spring实现每隔一分钟发送一封邮件连续发送10次 核心jar: 邮件发送:commons-email-1.2.jar mail.jar(必须的) quartz:quartz-all-1.8.3.jar quartz-all-1.8.3/lib/下所有jar spring:spring-context-support.ajr(必须的) 只贴出核心代码: Email发送:使用apache commons-email跟mail package

Quartz结合SPRING多任务定时调用

public class QuartzJob  {       public void work()       {               System.out.println(Spring Quartz的任务调度1被调用!");               //定时调用的业务逻辑       }  }  public class QuartzJob2 {       public void work()       {               System.out.println(S

java Quartz定时器任务与Spring task定时的几种实现,

java Quartz定时器任务与Spring task定时的几种实现 基于java 的定时任务实现, Quartz 时间详细配置    请查阅   http://www.cnblogs.com/sihuanian/p/5010872.html Quartz 时间简单介绍    请查阅最底部 spring框架来介绍. 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask

项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器,整合ehcache环境,只需要配置即可.     <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>

Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群

Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年7月7日 09:06:09 星期四 http://fanshuya

【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永不过期

官网说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 公众平台的API调用所需的access_token的使用及生成方式说明: 1.为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器.而其他业务逻辑服务器所

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

为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真实结果的3倍,那对银行来说是无法想象的,完全不可接受. 集群定时任务工作原理 所以为了解决以上问题,每个server把将要及正在运行的job所有状态都即时同步到中央数据库,然后再次触发调用时从数据库中分析是否已有别的server正在运行相同job (同名同定时时间点的job属于相当job),如果相同