-
2020.06.02 오늘의 일지Dev/개발일지 2020. 6. 2. 17:52
Quartz Job을 생성할 때 Cron 식이 유효한지 확인하는 코드를 추가했다.
사용한 클래스는 "org.quartz.CronExpression"이다.
1234567891011121314boolean isValidExpression(String expression){boolean result = false;if(CronExpression.isValidExpression(expression)){try {CronExpression targetExpression = new CronExpression(expression);if(targetExpression.getNextValidTimeAfter(new Date(System.currentTimeMillis())) != null){result = true;}} catch (ParseException e) {e.printStackTrace();}}return result;}cs 첫 조건은 Cron 식이 유효한 식인지 확인하는 isValidExpression이다.
파라메터는 String, 반환값은 boolean이다.
3번째 줄 isValidExpression의 내부를 보면
CronExpression을 생성하면서 파라메터의 String을 생성자로 주는데, 이 때 Exception이 발생하면 false, 제대로 생성되면 true를 반환하게 된다. 결국 5번째 줄 CronExpression 생성자를 내부에서 한번 해보고 결과를 넘겨주는 것이다.
두번째 조건은 6번째 줄의 getNextValidTimeAfter이다.
CronExpression이 생성됐다면, getNextValidTimeAfter를 통해 다음 수행 예정 Date가 있는지를 체크하는 것이다. 없으면 null이 반환되기 때문에 null일 경우 다음 수행 예정이 없는 무의미한 Cron 식이라는 것이고, 있다면 사용할 수 있는 식으로 간주한다.
두 조건을 만족할 경우 true를 반환해 새로운 Job을 생성하도록 한다.
참조
'Dev > 개발일지' 카테고리의 다른 글
2020-06-07 오늘의 일지 (0) 2020.06.08 2020.06.04 오늘의 일지 (0) 2020.06.04 2020.05.08 오늘의 일지 (0) 2020.06.01 2020.05.07 오늘의 일지 (0) 2020.06.01 2020.05.28 오늘의 일지 (1) 2020.05.28