`
pyczh
  • 浏览: 5036 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring定时器_配置文件方式

阅读更多
最近项目中需要定时推送通知到Apple设备中,于是学习了一下Spring定时器的应用,这里分享一下:
Spring定时器是基于quartz实现,我采用的是quartz-all-1.6.0.jar
启用定时器可以在xml配置文件中设置,也可以在代码中定义:
(1)配置文件方式
在Spring的配置文件中分别定义定时任务类,触发器,调度器
	<bean name="pushNotificationJob" class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass">
<!--这里是指定定时任务具体执行的内容-->
			<value>com.**.PushNotificationTask
			</value>
		</property>
		<property name="jobDataAsMap">
			<map>
				<entry key="timeout">
					<!-- 容器启动20秒钟后调用 -->
					<value>20</value>
				</entry>
				<!-- 这里是设置给jobClass的各种属性 -->
				<!--证书名称 如:**.p12,请将证书放在web-inf/classes/config/目录下 -->
				<entry key="certName"><value>aps_development.p12</value></entry>
				<!--证书密码 -->
				<entry key="password"><value>spring</value></entry>
				<entry key="isProduction">
				<!--  设置1为正式服务地址,0为开发者地址 -->
					<value>0</value>
				</entry>
				<!--apple设备服务 用于获取所有待推送的设备及更新设备信息 -->
				<entry key="appleDeviceService" value-ref="appleDeviceService" />
				<!--推送通知服务 用于获取待推送的消息 及推送成功后更新消息状态 -->
				<entry key="pushNotificationService" value-ref="pushNotificationService" />
			     <!--appleDeviceService及pushNotificationService是其他定义的bean-->
			</map>
		</property>

	</bean>

下面是定义触发器,触发器有两种:SimpleTriggerBean和CronTriggerBean,我这里需要指定在整点时刻执行任务,所以采用CronTriggerBean:
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="pushNotificationJob" />
		</property>
		<property name="cronExpression">
			<!-- 参数指定每隔1小时运行 -->
			<value>0 0 * * * ?</value>
		</property>
	</bean>

关于cronExpression的设置,下面给出示例:
"0 0 12 * * ?" 每天中午12点触发   
"0 15 10 ? * *" 每天上午10:15触发   
"0 15 10 * * ?" 每天上午10:15触发   
"0 15 10 * * ? *" 每天上午10:15触发   
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发   
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发   
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发   
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发   
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发   
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发   
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发   
"0 15 10 15 * ?" 每月15日上午10:15触发   
"0 15 10 L * ?" 每月最后一日的上午10:15触发   
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发   
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发   
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发  

***********************************************************
下面在配置调度类:
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref local="cronTrigger" />
			</list>
		</property>
	</bean>

配置完毕,这样程序启动后,到达整点时刻,即执行com.**.PushNotificationTask
的executeInternal方法:
下面是PushNotificationTask的定义:
import javapns.notification.transmission.NotificationProgressListener;
import javapns.notification.transmission.NotificationThread;
import javapns.notification.transmission.NotificationThreads;

import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class PushNotificationTask extends QuartzJobBean {
	IBaseService appleDeviceService;// 设备service
	IBaseService pushNotificationService;// 推送通知Service

	/**
	 * 定时推送
	 */
	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		JobDataMap dataMap = context.getJobDetail().getJobDataMap();
		// 这里可以获取配置<entry key>中的各项参数
		appleDeviceService = (IBaseService) dataMap.get("appleDeviceService");
		pushNotificationService = (IBaseService) dataMap
				.get("pushNotificationService");
		
                 //任务具体要干什么事,就写在这里了……………… 
	}
}
分享到:
评论

相关推荐

    spring定时器的包和配置文件

    在标题"spring定时器的包和配置文件"中,我们讨论的核心是Spring如何配置和使用定时器来自动化执行特定的任务。 首先,让我们了解Spring定时任务的基本概念。Spring定时器基于Java的`java.util.Timer`和`java.util....

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    在Spring配置文件(如`applicationContext.xml`)中配置Quartz的SchedulerFactoryBean。 ```xml &lt;bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; ...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    我们可以在 Spring 的配置文件中定义 Quartz 的 bean,以便实现任务的定时执行。 QuartzJob.java 在这个示例中,我们定义了一个 QuartzJob 类,该类实现了任务的执行。在这个类中,我们定义了一个 work 方法,该...

    java 定时器 spring 定时器

    Spring定时器通过提供丰富的配置选项和强大的`TaskScheduler`接口,成为企业级应用中定时任务的首选。使用Spring定时器,开发者能够更高效地管理和调度任务,从而提升系统的稳定性和可维护性。在实际项目中,可以...

    Spring定时器配置详解(附demo)

    在你的Spring主配置文件中,添加对`quartz-config.xml`的引用,然后启动Spring容器,Quartz定时任务就会生效。 ```xml ``` 通过以上步骤,你已经成功地在Spring中配置并启动了一个基于Quartz的定时任务。在实际...

    spring定时器简单的demo

    在这个配置文件中,我们需要启用Spring的Task执行器,这可以通过引入`&lt;task:annotation-driven/&gt;`标签来完成。这将允许Spring扫描带有`@Scheduled`注解的方法,这些方法会被自动安排为定时任务。 例如: ```xml &lt;!-...

    采用XML配置的方式实现Spring定时器的功能.zip

    本工程用于研究如何在Spring框架中采用XML配置的方式实现Spring定时器的功能 本工程编码方式:UTF-8 参考博客:http://blog.csdn.net/gaohuanjie/article/details/43563245

    spring定时器,定时调用任务配置

    要启用Spring Task,你需要在你的Spring配置文件(可能是`applicationContext.xml`或使用Java配置类)中添加以下配置: ```xml &lt;!-- 使用XML配置 --&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" ...

    Spring定时器配置详解

    总结来说,Spring定时器的配置主要包括创建任务类、在配置文件中定义任务和调度规则,以及在Web应用中设置启动参数。通过这种方式,你可以轻松地在Spring应用中安排和管理周期性的后台任务,而无需手动干预。

    spring定时器

    以上内容详细介绍了Spring定时器的相关知识点,包括其基本概念、不同类型的定时器以及实际应用中的配置和实现方法。通过理解和掌握这些知识,开发者可以更高效地利用Spring框架来实现复杂的定时任务功能。

    SPRING 定时器的使用

    在Spring配置文件中声明定时任务类以及相关的依赖注入。 ```xml &lt;!-- 声明定时器任务 --&gt; &lt;!-- 定义定时器 --&gt; &lt;bean id="scheduledDayDataTimerJob" class="org.springframework.scheduling...

    spring定时器两种实现方式

    在 Spring 配置文件中,需要定义 ScheduledTimerTask bean,并将其配置到 TimerFactoryBean 中: ```xml &lt;bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"&gt; ...

    quartzDaoImp.rar_quartz_spring定时_定时器

    2. **配置Scheduler**:在Spring的配置文件中声明`SchedulerFactoryBean`,配置相关的Quartz属性,如数据库连接信息、线程池大小等。 3. **定义作业类**:创建实现`org.quartz.Job`接口的类,定义作业的具体行为。...

    spring 定时器

    下面将详细阐述Spring定时器的工作原理、配置方法以及使用场景。 1. **工作原理**: Spring定时器基于`java.util.concurrent.ScheduledExecutorService`接口,它是一个线程池服务,可以用来安排在未来某个时间点...

    spring 定时器的使用实例

    Spring提供了多种方式来实现定时任务,其中一种常用的方法是通过集成Quartz库来创建一个定时器。本实例将详细介绍如何在Spring中使用Quartz作为定时器。 首先,Quartz是一个功能强大的开源作业调度框架,它允许应用...

    spring定时器实现源码

    要使用 Maven 构建包含定时任务的 Spring MVC 项目,你需要在 `pom.xml` 文件中添加必要的依赖,例如 Spring MVC 和 Spring Context: ```xml &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context ...

    Spring定时器quartz

    集成完成后,我们可以在代码中或通过XML配置文件动态地添加、修改和删除任务。此外,Quartz还支持在数据库中持久化作业和触发器,这样即使应用程序关闭,任务调度信息也不会丢失。在集群环境中,多个Quartz ...

    spring 定时器时间配置.doc

    首先,我们需要在Spring配置文件中声明这些bean。例如,`schedulerJobDetail` bean是`MethodInvokingJobDetailFactoryBean`的一个实例,它指定了要调用的目标对象(`targetObject`)和方法(`targetMethod`)。在这...

    spring定时器3.0之前和3.0之后以及相应的项目实例

    要使用Spring的定时器功能,首先需要配置一个`TimerTask`实现,然后在Spring的XML配置文件中声明并配置定时任务,例如: ```xml &lt;!-- 这里可以设置Task的属性 --&gt; &lt;bean id="timerTaskScheduler" class="org....

    ESSH整合Spring 定时器配置

    2. **配置ApplicationContext**:在Spring的配置文件(如applicationContext.xml)中启用定时任务支持,添加如下配置: ```xml &lt;bean id="myExecutor" class="org.springframework.scheduling.concurrent....

Global site tag (gtag.js) - Google Analytics