关注ITeye这么长时间,第一次发表文章,把我学到的东西和大家一同分享

本人应届毕业生一枚,刚到项目组不长时间,从事Flex+Java前台开发,最近组上给我分配个任务,是做个定时导出报表的需求。由于本人知识有限,只能通过网上来学习,学习大家的优秀代码,从而完成此次任务。
因此第一个想到的问题就是怎么才能实现定时呢?怎么设置才能让系统定时的去执行任务呢,这个问题我上网找了很多方法,但是我感觉Spring Quartz的配置用起来挺方便的。所以就照着网上的自己也搞了个。
Run一下,恩,不错,能定时执行任务。自己暗暗窃喜(其实是人家的劳动成果,自己只是copy了一下!)
以下就是我在项目中的Spring的配置,虽然网上有很多教程,有很多人眯着眼睛都能写出来,但是我还是要写出来,因为可能以后还是有人会因为这个问题而困惑。嘿嘿![/
quote]


<?xml version="1.0" encoding="UTF-8"?>
<beans default-autowire="byName"
	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/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
    	   http://www.springframework.org/schema/aop 
    	   http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

	<description>This spring config file for service </description>
	<!-- 要调用的工作类 -->  
	<bean id="multiAlarmReportService" class="com.nsn.ipm.multiAlarmReport.MultiAlarmReportService">
		<property name="multiAlarmReportDao" ref ="multiAlarmReportDao"/>
	</bean>

    <bean id ="multiAlarmEmailService" class="com.nsn.ipm.multiAlarmReport.MultiAlarmEmailService"/>
    
	<bean id ="multiAlarmReportDao" class="com.nsn.ipm.multiAlarmReport.dao.MultiAlarmReportDao"/>
	<!-- 定义调用对象和调用对象的方法 -->   
	<bean id="jobDetailInfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
		<!-- 调用的类 -->  
		<property name="targetObject" ref="multiAlarmReportService"/>
		<!-- 调用类中的方法 -->    
		<property name="targetMethod" value="searchMultiAlarm"/>
		<property name="concurrent" value="false"/> 
	</bean>
	<!-- 定义触发时间 -->  
	<bean id="triggerInfo" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="jobDetailInfo" />
		<!-- cron表达式 -->       
		<property name="cronExpression" value="0 55 14 * * ?"/>
	</bean>
	<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->     
	<bean id="schedulerFactory" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref local="triggerInfo" />
				<ref local="sendEmail" />
			</list>
		</property>
	</bean>
	
	<bean id="sendEmail" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="jobEmailInfo" />
		<property name="cronExpression" value="05 0 08 * * ?"/>
	</bean>
	
	<bean id="jobEmailInfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="multiAlarmEmailService"/>
		<property name="targetMethod" value="sendMultiAlarmEmail"/>
		<property name="concurrent" value="false"/> 
	</bean>
</beans>

你可能感兴趣的:(Spring Quartz配置)