spring은 squertz를 이용하여 정시 임무를 실현한다

앞말
정시 임무를 말하자면, 개발한 친구들은 틀림없이 낯설지 않을 것이다.어떤 일들은 항상 컴퓨터가 완성해야 한다. 바보같이 우리 자신에게 의지하는 것이 아니라.그러나 많은 사람들이 타이머에 대해 늘 낯설게 느낀다. 오늘 편집자는 친구들을 데리고 그의 신비한 베일을 벗기고spring이 squertz를 이용하여 정시 임무를 실현하는 것을 설명한다.
1. 필요한 Jar

quartz-1.8.5.jar 
commons-logging.jar 
spring-core-3.0.5.RELEASE.jar 
spring-beans-3.0.5.RELEASE.jar 
spring-context-3.0.5.RELEASE.jar 
spring-context-support-3.0.5.RELEASE.jar 
spring-asm-3.0.5.RELEASE.jar 
spring-expression-3.0.5.RELEASE.jar 
spring.transaction-3.0.5.RELEASE.jar 
spring-web-3.0.5.RELEASE.jar 
2. 프로필
이것은 당신이 언제 당신의 정시 임무를 수행할 것인지, 어떤 방법을 실행할 것인지를 설정합니다. 예를 들어 2016.11.10 23:00, 실행com.seewoedu.train.quartz.GenerateRewardListTask방법, 여기에서cron을 사용하여 실행 시간을 지정했습니다. 관련 문법은 볼 수 있습니다https://www.jb51.net/article/103861.htm

<?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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 <!--   -->
 <bean name="startQuertz" lazy-init="false" autowire="no"
  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 <property name="triggers">
  <list>
  <ref bean="myJobTrigger" />
  </list>
 </property>
 </bean>
 <!--   -->

 <!-- quartz-2.x  -->
 <bean id="myJobTrigger"
  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
 <property name="jobDetail">
  <ref bean="myJobDetail" />
 </property>
 <property name="cronExpression">
  <!--<value>10 0/1 * * * ?</value>--> <!-- Cron “10 */1 * * * ?” : 10 , 1 。 -->
  <value>0 0 9 10 12 ? 2016</value> <!-- Cron “0 0 23 10 11 ? 2016” : 2016.11.10 23:00:00  。 -->
 </property>
 </bean>
 <!--   -->

 <!-- job  -->
 <bean id="myJobDetail"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 <property name="targetObject">
  <ref bean="myJob" />
 </property>
 <property name="targetMethod">
  <value>generate</value>
 </property>
 </bean>
 <!-- job  -->

 <!--  bean -->
 <bean id="myJob" class="com.seewoedu.train.quartz.GenerateRewardListTask" />
</beans>
3. 실행되는 방법

public class GenerateRewardListTask {
 @Autowired
 private GiftReceiveRecordService giftReceiveRecordService;

 org.slf4j.Logger logger = LoggerFactory.getLogger(GenerateRewardListTask.class);

 public void generate() throws Exception {
 giftReceiveRecordService.generateRewardMember(); // 

 }
}
4. 주의해야 할 문제
1. 실행 시간이 연도로 지정되었을 때 문제가 발생할 수 있습니다. 바로 이 시간이 지난 후에 프로젝트를 시작할 때 메모리 leak의 오류를 계속 보고합니다. 아마도 당신의 정시 임무는 영원히 실행되지 않아 프로젝트가 계속 시작되지 않을 것입니다.
2. 정시 임무는 당신의 배치 프로젝트를 통해 정시 임무를 수행할 시간 간격을 계산하는 것이지 실시간으로 당신의 서버 시간을 얻는 방법이 아니기 때문에 서버 시간을 수정하여 정시 임무가 적용되는지 테스트하는 것은 불가능하다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

좋은 웹페이지 즐겨찾기