当前位置:首页 > 开发 > 编程语言 > Spring > 正文

Spring调度配置

发表于: 2013-04-19   作者:as11051105   来源:转载   浏览次数:
摘要: 当你新建web项目,配置好SSH环境后如要使用调度,先需要导入quartz-all-1.6.1.jar.这里的Demo是发短信: 首先,配置好applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.
当你新建web项目,配置好SSH环境后如要使用调度,先需要导入quartz-all-1.6.1.jar.这里的Demo是发短信:
首先,配置好applicationContext.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" 
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
			http://www.springframework.org/schema/aop 
			http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
			<property name="url" value="jdbc:oracle:thin:@***.***.***.***:**" />
			<property name="username" value="***" />
			<property name="password" value="***" />
		</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
			</props>
		</property>
		<property name="mappingDirectoryLocations">
			<list>
				<value>classpath*:/com/*/model</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,调度配置文件:
<!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>


接下来,就是具体调度实现的方法了:

/**
 * 短信下发调度
 * 
 */
public class SendMMSScheduler {
	private PurchaseOrderService purOrderService;
	public void sendMMS() {
		//TODO
//具体方法
	}
	public void setPurOrderService(PurchaseOrderService purOrderService) {
		this.purOrderService = purOrderService;
	}
}

好了,一个调度这就行了,很简单的。关于cron表达式,可以看一下本人的这篇文章 cron表达式,
不足之处请多多指教!

Spring调度配置

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/scheduling
应用场景:每月10号,我们都会收到本月薪资的邮件;托管行会在每天早上发送可用头寸表。这些事情都
1、InvoiceTaskJob,有一个invoiceTaskMothed (自定义)方法; <bean id="invoiceTaskJob" clas
转自http://resp.iteye.com/blog/1490575 最近实现了一个业务,刚好需要用到Spring 触发器,特写了
应用场景:每月10号,我们都会收到本月薪资的邮件;托管行会在每天早上发送可用头寸表。这些事情都
1、任务调度 <a href="http://img.it610.com/image/info2/e1ac0a37825
一、计划任务 需要定时执行一些计划(定时更新等),这样的计划称之为计划任务 Spring抽象封装了Jav
开发时有时会有这样一种需求,定期计算某些数据或者执行某些程序进行操作,这种程序就是平时所说的
开发时有时会有这样一种需求,定期计算某些数据或者执行某些程序进行操作,这种程序就是平时所说的
开发时有时会有这样一种需求,定期计算某些数据或者执行某些程序进行操作,这种程序就是平时所说的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号