1. 注解方式:
配置文件
<?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:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!-- 配置02、执行器 -->
<task:annotation-driven />
定时任务类
public abstract class BaseJob {
private static final Logger logger = LoggerFactory.getLogger(BaseJob.class);
@Autowired
private ISysParamService sysParamService;
@Autowired
private IpService ipService;
public boolean canExecute(){
SysParam sysParam = sysParamService.getByCode(SysParamEnum.JOB_IP.getCode());
if(sysParam == null){
logger.error("JOB_IP参数未配置");
return false;
}
String sysParamValue = sysParam.getParamValue();
if(ipService.getIpSet().contains(sysParamValue)){
SysParam sysParam1 = sysParamService.getByCode(SysParamEnum.STOP_JOB_NAME.getCode());
if(sysParam1 == null){
logger.error("STOP_JOB_NAME参数未配置");
return true;
}
String sysParamValue1 = sysParam1.getParamValue();
String[] className = org.apache.commons.lang3.StringUtils.split(sysParamValue1,",");
if(ArrayUtils.contains(className,this.getClass().getSimpleName())){
return false;
}
return true;
} else {
logger.warn("定时任务IP配置不正确,停止运行");
//throw new BusinessException();
return false;
}
}
public void test(){
System.out.println(this.getClass().getSimpleName());
}
@Service
public class OmsOrderInvoiceDeleteJob extends BaseJob{
private static final Logger logger = LoggerFactory.getLogger(OmsOrderInvoiceDeleteJob.class);
//@Override
@Scheduled(cron = "0 0 0,12 * * ?") //每天12点和24点
protected void doExecute() throws Exception {
logger.info("开始清除过期发票!");
if(!canExecute()){
return;
}
try {
String path = System.getProperty("java.io.tmpdir");
File fileDir = new File(path+"/invoiceFiles");
File[] files = fileDir.listFiles();
if(null != files && files.length > 0) {
for (File file : files) {
boolean fileOlder = FileUtils.isFileOlder(file, new Date(System.currentTimeMillis() - 12*60*60000));//12小时内删除
if (fileOlder){
FileUtils.deleteQuietly(file);
}
}
}
} catch (Exception e) {
logger.error(e.getMessage(),e);
logger.error("定时清除发票记录失败!");
}
}
}