Java 웹 프로젝트에서 시간 작업 작성 실현
지금 갑자기 이 도구가 없어지고 정시 임무를 쓰려면 어떻게 해야 합니까?
비웹 응용 프로그램에 있어서 우리는 Quartz를 사용할 수 있으며 사용이 간단하고 기능이 강하다.
Java 웹 응용 프로그램에 있어 Quartz(방법 소개: https://www.jb51.net/article/104105.htm도 사용할 수 있지만 더 편리한 도구가 있습니다. 바로spring이 자체적으로 지원하는 정시 작업 기능입니다.
Spring의 정시 작업은spring-context에서 간단하게 구성된 템플릿은 다음과 같습니다.
<?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:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<task:scheduler id="scheduler" pool-size="200"/>
<task:scheduled-tasks>
<!-- task -->
<task:scheduled ref="xxxTask" method="execute" cron="0 0 * * * ?"/>
</task:scheduled-tasks>
<task:annotation-driven scheduler="scheduler"/>
</beans>
이 중에서task:scheduler는 정시 작업을 수행하는 scheduler를 지정합니다. 기본적으로 사용하는 것은org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
task:annotation-driven에서 @Async와 @Scheduled 주석을 사용할 수 있습니다.
task:scheduler-tasks에서 하나의task를 정의했는데 그 중에서 실행 주기는cron 표현식을 사용할 수 있고 지연 시간이나 주파수 등을 지정할 수 있습니다.
cron을 변환하는 온라인 도구가 있으니 추천합니다. (여기에 7글자가 표시될 수 있으니 주의하십시오. 마지막 *를 제거하면 됩니다.): http://tools.jb51.net/code/Quartz_Cron_create
다음은 또 하나의 문제가 있다. 통상적으로 우리의 온라인 환경은 집단 환경이고 여러 대의 기계가 있다. 이런 정시 임무는 통상적으로 한 대에서 집행하기만 하면 된다. 어떻게 통제할 수 있을까?
지금 두 가지 방법을 생각해서 여러분에게 공유합니다.
1. Redis 글로벌 캐시 사용
https://www.jb51.net/article/104111.htm
2. 서류를 판단하는 방식
파일의 존재 여부를 판단하여 작업을 실행할지 여부를 결정합니다 (작업에 대응하는spring 프로필을 불러올지). 참고 코드:
@Component
public class XxxListener implements ApplicationContextAware {
//
private static final AtomicInteger INIT_LOCK = new AtomicInteger(0);
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (INIT_LOCK.incrementAndGet() > 1) {
//
return;
}
Resource resource = applicationContext.getResource("classpath:< >");
if (!resource.exists()) {
// ,
return;
}
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(applicationContext);
context.setConfigLocations("classpath:spring/job.xml");
context.refresh();
}
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Javaweb에서 양식 데이터를 가져오는 다양한 방법Javaweb에서 양식 데이터를 가져오는 몇 가지 방법 1. 키 값이 맞는 형식으로 폼 데이터를 얻는다 getParameter(String name): 키를 통해 value를 반환합니다. getParameterVal...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.