1. 比如spring的定时器注解或者配置文件怎么写
有两种流行Spring定时器配置:java的Timer类和OpenSymphony的Quartz。 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportTask extends TimerTask{ @Override public void run()…
2. JAVA定时器如何配置文件,就是下面这个题,该怎么做啊
这是一个设计类的题目.不是叫你去配置,目前java的时间任务框架已经比较成熟了 解决这个问题大概需要做一下工作 1 写一个xml的解释器类,或者用java的XML的解释器,用来解释定时任务xml配置文件 2 写一个任务管理类在1解释完xml后,实际上就是根据xml的配置来执行定时任务了题目中的接口,实际上就是模拟Thread类,用来执行任务管理类就是根据配置来启动和关闭定时任务
3. spring定时器配置在哪个xml
spring定时器目前有两种方式、一种是走配置文件,一种是注解下面来介绍这两种方式。一、配置文件实现<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"><!– 详细信息 –><bean id="methodInvokingJobDetail"class="org.springframework.scheling.quartz."><property name="targetObject"><ref bean="mainServiceImplTwo"/></property><property name="targetMethod"><value>springTrigger</value></property><!– 一个定时器,可能会重复的执行,有可能第一次还没有执行完,第二次就开始了设置此参数保证第一次定时器,还没有执行完时,不会执行第二次 –><property name="concurrent"><value>false</value></property></bean><!– 触发器 3.2的实现方式 CronTriggerBean<bean id="cronTrigger" class="org.springframework.scheling.quartz.CronTriggerBean"><property name="jobDetail"><ref bean="methodInvokingJobDetail"/></property><property name="cronExpression"><value>0 * * * * ?</value></property></bean> –> <!– 触发器 4.1及以后的实现方式 CronTriggerFactoryBean –> <bean id="cronTrigger" class="org.springframework.scheling.quartz.CronTriggerFactoryBean"><property name="jobDetail"><ref bean="methodInvokingJobDetail"/></property><property name="cronExpression"><value>0 * * * * ?</value></property></bean><!– 定时任务列表 –><bean class="org.springframework.scheling.quartz.SchelerFactoryBean"><property name="triggers"><list> <ref bean="cronTrigger"/> </list></property></bean></beans><value>0 * * * * ?</value> 表示时间配置:时间大小由小到大排列,从秒开始,顺序为 秒,分,时,天,月,年 *为任意 ?为无限制。marven 引入定时器需要的包(不包含其他spring的包。)<dependency> <!– spring 定时器需要 –> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.4.RELEASE</version> </dependency> <dependency> <!– spring 定时器需要 –> <groupId>org.quartz-scheler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <!– spring 定时器需要 –> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> </dependency>具体时间设定可参考 "0/10 * * * * ?" 每10秒触发 "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触发 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ? * L 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ? 二、注解形式实现在springmvc.xml里面(根据自己的实际代码改变)xmlns 多加下面的内容、 xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加下面的内容、http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd<!– task:注解定时器使用 这种配置有错误 会报找不到 org.springframework.scheling.TaskScheler 这个bean(这其实是一个接口)<context:annotation-config/> <bean class="org.springframework.beans.factory.annotation."/> –><!– 这种配置是正常的 —><task:annotation-driven scheler="qbScheler" mode="proxy"/> <task:scheler id="qbScheler" pool-size="10"/> 要放在<mvc:annotation-driven/><context:component-scan base-package="com"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /></context:component-scan>之后代码实现类实现如下:@Component public class UsersTimerImpl implements IUsersTimer{//更新 支付密码状态/// 定时器注解调用@Scheled(cron = "00 00 00 * * *")public void updatePayStatus(){//执行逻辑的代码}}
4. spring框架中怎样让配置文件加载完成后启动定时器
<!– 定时器配置 –><bean id="timeDitail" class="org.springframework.scheling.quartz."><property name="targetObject" ref="myTimer"></property><!– 指定任务类 –><property name="targetMethod" value="doit"></property><!– 指定任务方法 –></bean>END配置定时器时间间隔1<!– 定义时间间隔触发器 –><bean id="timeTigger" class="org.springframework.scheling.quartz.CronTriggerBean"><property name="jobDetail" ref="timeDitail"></property><property name="cronExpression"><value>*/5 * * * * ?</value></property></bean>END配置启动定时器1<!– 启动定时器 –><bean id="startJob" class="org.springframework.scheling.quartz.SchelerFactoryBean"><property name="triggers"><list><ref bean="timeTigger"/> </list></property></bean>END在web中配置配置文件地址和类加载监听器1<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>END定时器的时间表达式:字段 允许值 允许的特殊字符 秒 0-59 , – * / 分 0-59 , – * / 小时 0-23 , – * / 日期 1-31 , – * ? / L W C 月份 1-12 或者 JAN-DEC , – * / 星期 1-7 或者 SUN-SAT , – * ? / L C # 年(可选) 留空, 1970-2099 , – * / 表达式意义 "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触发 每天早上6点 0 6 * * * 每两个小时 0 */2 * * * 晚上11点到早上8点之间每两个小时,早上八点 0 23-7/2,8 * * * 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 1月1日早上4点 0 4 1 1 * 有些子表达式能包含一些范围或列表 例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT” “*”:字符代表所有可能的值 因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天 “/”:字符用来指定数值的增量 例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ; 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样 “?”:字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” “L”: 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 但是它在两个子表达式里的含义是不同的。 在天(月)子表达式中,“L”表示一个月的最后一天 , 在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT 如果在“L”前有具体的内容,它就具有其他的含义了 例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最后一个星期五 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
5. spring配置文件里怎样获取数据库里的值,用来做java定时器的
你可以先从数据库取到值,然后在赋值给一个变量然后用spring来检查这个变量啊。
6. spring定时器时间配置 每小时怎么设置
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件
7. 用java的Quartz包定时调用方法,我想实现每隔半小时调用一次方法,那个配置文件中时间的配置符号咋写的了
<!– 常用的corn表达式 *隔5秒执行一次:*/5 * * * * ?*隔1分钟执行一次:0 */1 * * * ?*23点执行一次:0 0 23 * * ?*晨1点执行一次:0 0 1 * * ?*月1号凌晨1点执行一次:0 0 1 1 * ?*月最后一天23点执行一次:0 0 23 L * ?*周星期天凌晨1点实行一次:0 0 1 ? * L*在26分、29分、33分执行一次:0 26,29,33 * * * ?*的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?–> 这是spring调用时,的符号公式
8. 定时器起什么作用
今天我介绍一下spring的定时器功能,它不仅实现起来方便,功能强大,而且在web开发时正好配合spring框架使用。spring支持jdk内置的Timer类和Quartz Scheler?介绍spring的定时器,当然要先介绍配置文件applicationContext.xml了。?<bean name="job" class="org.springframework.scheling.quartz.JobDetailBean"><property name="jobClass"><value>jaoso.news.web.action.JobAction</value></property><property name="jobDataAsMap"><map><entry key="timeout"><value>10</value></entry></map></property></bean>?说明:org.springframework.scheling.quartz.JobDetailBean是spring对你的类进行调度的代理,在jobClass中要指定你的任务类(com.yangsq.web.action.JobAction),在jobDataAsMap中向你的任务类中注入一些信息,当然也可以reference一个,不要忘记在你的任务里加入这些属性及set方法(有些罗嗦)。timeout属性设定了当服务器启动后过10秒钟首次调用你的JobAction。?<bean id="cronTrigger" class="org.springframework.scheling.quartz.CronTriggerBean"><property name="jobDetail"><ref bean="job"/></property><property name="cronExpression"><value>0 0/2 * * * ?</value></property></bean>?说明:org.springframework.scheling.quartz.CronTriggerBean是spring提供的触发器,在这个触发器中设定了要触发的job(jobDetail属性设定了先前定义的bean),同时设定了触发时间(cronExpression)—每隔两分钟(0 0/2 * * * ?),这个的设定方式最后会说明。?<bean class="org.springframework.scheling.quartz.SchelerFactoryBean"><property name="triggers"><list><ref local="cronTrigger"/></list></property></bean>?说明:org.springframework.scheling.quartz.SchelerFactoryBean这是一个spring的工厂bean,在他的triggers属性列表中加入刚才定义的触发器,这里可以定义多个触发器(list嘛)。?好了,配置文件就介绍完了,该介绍com.yangsq.web.action.JobAction类了,?引入包:说明:QuartzJobBean是spring自带的,把spring的jar包加入就行了,但是前两个包要去下了,呵呵,google吧。??当然要继承QuartzJobBean了,但是光extends不行,必须要重载他的executeInternal方法?好了,一个spring的时间调度完成了。?附:时间配置说明?sping定
9. 我想请问一下Spring定时器中的quartz.properties是怎么配置的线程池又是怎么配置的呢
org.quartz.threadPool.threadCount = 2 //定义线程池的数量org.quartz.threadPool.threadPriority = 5org.quartz.threadPool. = false#============================================================================# Config JobStore#============================================================================org.quartz.jobStore.misfireThreshold = 60000# Config JobStore in RAM,it will lost when server restoreorg.quartz.jobStore.class = org.quartz.simpl.RAMJobStore#Config JobStore in DB#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX#org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate#org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegateapplicationContext-quartz.xml<!– 启动定时器任务时,这里调用 ref bean –<bean id="quartzScheler" class="org.springframework.scheling.quartz.SchelerFactoryBean"<property name="triggers"</property<!– 连接线程池配置文件 —
10. 如何配置Spring定时器准确运行时间,例如我想它在每天半夜12点运行一次
Spring quartz的配置:表达式意义 "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触发 每天早上6点 0 6 * * * 每两个小时 0 */2 * * * 晚上11点到早上8点之间每两个小时,早上八点 0 23-7/2,8 * * * 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 1月1日早上4点 0 4 1 1 * 希望对你有帮助!