定时任务一般使用Quartz,这种方式配置很麻烦。
使用Spring也可以解决任务调度问题,使用方便简单;
这里来将下Spring如何实现任务调度功能的
1.在xml的<beans>配置文件中加入如下,引入task
<beans
...省略一些基础的spring引入...
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
...省略一些基础的spring引入...
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd">
//开启task
<task:annotation-driven>
</beans>
2.使用
在需要被定时执行的方法函数上加上@Scheduled(cron="")注解就行了;其中cron内输入的是表达式,可再cron在线生成器上生成点击这里在线生成;
例子:
/**
我这里定义的是每天的10点14点和15点和11点15分会执行这段代码,
由于11点15分比较特殊,不能和其他的整点写在一起,所以我定义了两个注解,
很庆幸的是定义了两个相同注解并不冲突
*/
@Scheduled(cron="0 0 10,14,15 * * ? ")
@Scheduled(cron="0 15 11 * * ? ")
public void sendEmial(){
try{
//这里调用你需要执行的函数。
//注意:定时任务方法上不能定义参数,如果业务里需要参数查询一些东西,可将参数配置在数据库中。
// 如果你的业务里需要用到request获取项目的绝对路径 ,由于定时任务是服务端接口调用服务端接口,所以方法内不能定义参数,也不能定义request。
//可以看这篇文章解决如何不使用request获取项目的绝对路径:https://blog.csdn.net/weixin_43865196/article/details/108644020
}catch(){
}
}
结束!