zoukankan      html  css  js  c++  java
  • 定时器的使用

    前几天接到的需求是要求在正在开发的项目中添加一个远程调用的模块,并且是要求定时调用。就考虑到定时器机制。

    查了一下java开发中大约有三种j定时机制,java本身自带的机制,还有一个是spring框架自带的定时机制,还有一个就是我所采用的quartz定时器。三者的区别大家可以找到。

    我在spring框架中使用quartz的步骤总结:

    1.引入jar包--我使用的是maven项目

    
    
    <!--Quartz 定时调度器  begin-->
    <dependency>
       <groupId>org.quartz-scheduler</groupId>
       <artifactId>quartz</artifactId>
       <version>2.2.1</version>
    </dependency>
    <!--Quartz 定时调度器  end-->
    
    

    2.创建定时器类

    public class ExecuteTimerTask{
        protected Logger logger = LoggerFactory.getLogger(getClass());//日志对象
        @Autowired
        private CallApiService callApiService;//注入执行远程调用的Service
        /**
         * @功能描述 执行远程调用
         */
        public void execute(){
            callApiService.saveElectricity();
        }
    }

    3.配置spring-context-quartz.xml

    <!-- 要执行的远程调用任务类 -->
        <bean id="quartzJob" class="com.thinkgem.jeesite.modules.rmi.time.ExecuteTimerTask" />
    
        <!-- 将需要执行的定时任务注入JOB中。 -->
        <bean id="methodInvokingJmobDetailFactoryBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="quartzJob"></property>
            <!-- 任务类中需要执行的方法 -->
            <property name="targetMethod" value="execute"></property>
            <!--&lt;!&ndash; 上一次未执行完成的,要等待有再执行。 &ndash;&gt;-->
            <!--<property name="concurrent" value="false"></property>-->
        </bean>
    
        <!-- 基本的定时器配置 -->
       <!-- <bean id="" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
            <property name="jobDetail" ref="methodInvokingJmobDetailFactoryBean"></property>
    
            <property name="startDelay" value="3000"></property>
            <property name="repeatInterval" value="2000"></property>
        </bean>-->
    <!--不同的定时配置类,实现不同功能而已--> <bean id="cronTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!--制定调用任务及方法--> <property name="jobDetail" ref="methodInvokingJmobDetailFactoryBean" /> <!--设置调用的周期--> <!--暂设每分钟执行一次--> <property name="cronExpression" value="0 0/1 * * * ?" /> </bean> <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerFactoryBean"></ref> </list> </property> </bean> </beans>

    我使用的是配置文件的方式进行开发的





  • 相关阅读:
    js总结 |数组重复问题
    前端Js自定义相机取景框
    nodejs+mongodb运用
    使用MongoDB
    总结 |异步/非阻塞的处理方式
    npm与依赖包
    js总结 |JS深度拷贝的方法
    js笔记 |整洁代码技巧
    微信支付——介入指引
    2021最全测试资源合集(已更新至2021.03.09,关注测试生财公众号,享受独家爆料)
  • 原文地址:https://www.cnblogs.com/kongweiteng/p/6726270.html
Copyright © 2011-2022 走看看