我对cron表达很新。我对它的工作原理只有基本的了解。我正在实现允许用户使用pattern * * * * * *发送cron表达式值的应用程序。但该应用程序不允许cron每30分钟运行一次。
这是我写的验证方法。
private boolean checkInvalidCronExpresstion( final String value )
{
final String[] expression = StringUtils.split( value, " " );
// not allow case "* * * * * *"
if ( expression[0].equals( "*" ) )
{
return true;
}
else if ( expression[0].contains( "/" ) )
{
final String[] minutes = StringUtils.split( expression[0], "/" );
diff = Integer.parseInt( minutes[1] );
// not allow case "*/x * * * * *" with x < 30
if ( diff < 30 && expression[1].contains( "*" ) )
{
return true;
}
}
return false;
}
我的问题是(1)上述方法是否涵盖了每隔30分钟触发cron的所有无效表达式,以及 (2)我相信可以有更优雅的方式检查表达式,例如将其转换为小时和分钟。我确实研究过Spring CronSequenceGenerator,但我认为在这种情况下它没有帮助。建议使用任何实用程序类或解决方案吗?