Spring Boot 任务
异步任务
标注某个方法是异步方法,该方法被调用时就会异步调用,即Spring Boot 会新建一个线程来运行该方法
1 |
|
在主类中使用@EnableAsync
来开启异步注解。
1 | public void demo(){ |
运行时就会异步调用,既不管asyncMethod
是否运行完,doOtherthings
都会开始运行。
定时任务
使用@Scheduled(cron="second minute hour dayOfMonth month dayOfWeek")
来指定方法在什么时间运行。其中日期和星期互斥,设置的时候至少有一个?
。
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日期 | 1-31 | , - * ? / L W C |
月份 | 1-12 或者 JAN-DEC | , - * / |
星期 | 1-7 或者 SUN-SAT | , - * ? / L C # |
年(可选) | 留空, 1970-2099 | , - * / |
*
字符代表所有可能的值/
字符用来指定数值的增量- 在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟
- 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
?
字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值- 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为
?
- 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为
L
字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写- 如果在“L”前有具体的内容,它就具有其他的含义了。例如:“6L”表示这个月的倒数第6天
- 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
W
字符代表着工作日(Mon-Fri),并且仅能用于日域中。- 例如,日域中的 15W 意味着 “离该月15号的最近一个平日” 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。
C
字符代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历- 例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。
邮件任务
引入依赖
1 | <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail --> |
配置用于发送的邮箱
1 | spring: |
注入一个JavaMailSenderImpl
1 |
|
如果需要发送复杂点的邮件,例如发送附件或html文本
1 |
|