使用Spring结合cron设置定时触发器,以下是设置步骤。
(1)添加spring配置文件的xmlns和xsd
xmlns需要添加的内容:
xmlns:task="http://www.springframework.org/schema/task"
xsd需要添加的内容:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd"
(2)在配置文件中添加代码
<!--cron定时器配置-->
<task:annotation-driven />
(3)在定时触发的方法上添加注解
@Scheduled(cron="0 21 21 ? * TUE,THU,SUN")
意思是每周二、四、日的21:21执行该函数,该方法写在控制层(controller),也能写在其它层只要Spring能够管理该类中的注解。
cron里面配置的表达式具体参数含义可以参考:cron参数含义
下面是我自己的详细代码
private static final Logger LOGGER = Logger.getLogger(IssueController.class);
@Autowired
private PeriodService periodService;
@Scheduled(cron="0 21 21 ? * TUE,THU,SUN")
public void InsertNewData() {
LOGGER.info("定时服务启动...");
try{
Period period=getIssueNum();
String issue=period.getIssue();
Period isFind=periodService.findByIssue(issue);//根据期号查询数据库是否存在
if(isFind==null){//如果不存在该期的双色球,进行添加
int flag=periodService.save(period);
if(flag>0) {
LOGGER.info("已保存开奖期号:"+issue);
}
} else
LOGGER.info("开奖期号已存在:"+issue);
}catch (Exception e){
e.printStackTrace();
LOGGER.error("Error msg: "+e.getMessage());
}
}
注意:值得强调的是该定时触发的函数返回值必须是void否则Spring启动会报错。