Spring调度配置

本文介绍如何在Spring项目中配置并使用Quartz调度器来定期执行任务。通过实例演示了如何设置数据库连接、事务管理,并定义定时任务及触发器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 当你新建web项目,配置好SSH环境后如要使用调度,先需要导入quartz-all-1.6.1.jar.这里的Demo是发短信:
    首先,配置好applicationContext.xml:
    Java代码 复制代码  收藏代码Spring调度配置
    1. <?xml version="1.0" encoding="UTF-8"?>   
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    4.     xmlns:aop="http://www.springframework.org/schema/aop"  
    5.     xmlns:tx="http://www.springframework.org/schema/tx"  
    6.     xsi:schemaLocation="   
    7.             http://www.springframework.org/schema/aop    
    8.             http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
    9.             http://www.springframework.org/schema/beans    
    10.             http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
    11.             http://www.springframework.org/schema/tx    
    12.             http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">   
    13.        
    14.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">   
    15.         <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />   
    16.             <property name="url" value="jdbc:oracle:thin:@***.***.***.***:**" />   
    17.             <property name="username" value="***" />   
    18.             <property name="password" value="***" />   
    19.         </bean>   
    20.   
    21.     <bean id="sessionFactory"  
    22.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
    23.         <property name="dataSource">   
    24.             <ref bean="dataSource" />   
    25.         </property>   
    26.         <property name="hibernateProperties">   
    27.             <props>   
    28.                 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>   
    29.                 <prop key="hibernate.show_sql">true</prop>   
    30.                 <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>   
    31.             </props>   
    32.         </property>   
    33.         <property name="mappingDirectoryLocations">   
    34.             <list>   
    35.                 <value>classpath*:/commodel</value> </list> </property> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> <!-- 配置事务传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="do*" propagation="REQUIRED" /> <tx:method name="*" read-only="true" /> </tx:attributes> </tx:advice> <!-- 哪些类的哪些方法参与事务 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(* com.*.service.*.*(..))" /> <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" /> </aop:config> <!-- dao模板(所有dao都将使用此模板) --> <bean id="daoTemplate" abstract="true"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <import resource="applicationContext-dao.xml" /> <import resource="applicationContext-service.xml" /> <import resource="applicationContext-action.xml" /> <import resource="applicationContext-quartz.xml" /> <import resource="applicationContext-webservice.xml" /> </beans>
      其次,接下来就是applicationContext-quartz.xml,调度配置文件:
      Java代码 复制代码  收藏代码Spring调度配置
      1. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">   
      2. <beans>   
      3.     <!-- 配置需要定时执行的Spring bean -->   
      4.     <bean id="sendMMSScheduler" class="com.lx100ERP.schedule.SendMMSScheduler">   
      5.         <property name="purOrderService" ref="purOrderService"></property>   
      6.     </bean>   
      7.     <!-- 配置quartz的任务,指定该任务执行哪一个bean的哪一个方法 -->   
      8.     <bean id="sendMMSByDayFactory"  
      9.         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
      10.         <!-- 要调用的类 -->   
      11.         <property name="targetObject" ref="sendMMSScheduler" />   
      12.         <!-- 要调用的方法 -->   
      13.         <property name="targetMethod" value="sendMMS" />   
      14.     </bean>   
      15.   
      16.     <!-- 配置quartz的触发器,指定该触发器触发的条件,以及该触发器加载哪些job -->   
      17.     <bean id="sendMMSByDayCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">   
      18.         <property name="jobDetail">   
      19.             <ref bean="sendMMSByDayFactory" />   
      20.         </property>   
      21.         <!-- cron 表达式(秒,分,时,日,月,周):每隔10分钟执行一次 -->   
      22.         <property name="cronExpression" value="0 */1 0-23 ?" />   
      23.   
      24.     </bean>   
      25.     <!-- 配置quartz调度,指定加载哪些触发器 -->   
      26.     <bean id="scheduler"  
      27.         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">   
      28.         <property name="triggers">   
      29.   
      30.             <list>   
      31.                                 <!-- 这里一定要放开,否则不会调成功-->   
      32.                 <ref local="sendMMSByDayCronTrigger" />    
      33.             </list>   
      34.         </property>   
      35.     </bean>   
      36. </beans>  
      <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
      <beans>
              <!-- 配置需要定时执行的Spring bean -->
              <bean id="sendMMSScheduler" class="com.lx100ERP.schedule.SendMMSScheduler">
                      <property name="purOrderService" ref="purOrderService"></property>
              </bean>
              <!-- 配置quartz的任务,指定该任务执行哪一个bean的哪一个方法 -->
              <bean id="sendMMSByDayFactory"
                      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                      <!-- 要调用的类 -->
                      <property name="targetObject" ref="sendMMSScheduler" />
                      <!-- 要调用的方法 -->
                      <property name="targetMethod" value="sendMMS" />
              </bean>
      
              <!-- 配置quartz的触发器,指定该触发器触发的条件,以及该触发器加载哪些job -->
              <bean id="sendMMSByDayCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
                      <property name="jobDetail">
                              <ref bean="sendMMSByDayFactory" />
                      </property>
                      <!-- cron 表达式(秒,分,时,日,月,周):每隔10分钟执行一次 -->
                      <property name="cronExpression" value="0 */1 0-23 * * ?" />
      
              </bean>
              <!-- 配置quartz调度,指定加载哪些触发器 -->
              <bean id="scheduler"
                      class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
                      <property name="triggers">
      
                              <list>
                                      <!-- 这里一定要放开,否则不会调成功-->
                                      <ref local="sendMMSByDayCronTrigger" /> 
                              </list>
                      </property>
              </bean>
      </beans>
      
      

      接下来,就是具体调度实现的方法了:
      Java代码 复制代码  收藏代码Spring调度配置
      1.   
      2.   
      3. public class SendMMSScheduler {   
      4.     private PurchaseOrderService purOrderService;   
      5.     public void sendMMS() {   
      6.         //TODO   
      7. //具体方法   
      8.     }   
      9.     public void setPurOrderService(PurchaseOrderService purOrderService) {   
      10.         this.purOrderService purOrderService;   
      11.     }   
      12.  
      public class SendMMSScheduler {
              private PurchaseOrderService purOrderService;
              public void sendMMS() {
                      //TODO
      //具体方法
              }
              public void setPurOrderService(PurchaseOrderService purOrderService) {
                      this.purOrderService = purOrderService;
              }
      }
      
      <a href="http://as11051105.iteye.com/blog/1850249">http://as11051105.iteye.com/blog/1850249</a>
      好了,一个调度这就行了,很简单的。关于cron表达式,可以看一下本人的这篇文章cron表达式,
      不足之处请多多指教!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值