SpringBoot(6) ------>异步任务、邮件任务与定时任务
一、异步任务
1、启动类上添加@EnableAsync注解,启用异步模式
2、方法上添加@Async注解
/** * @author liangd * date 2020-12-15 10:49 * code 异步任务 */ @Service public class AsyncService { /** * 开启异步,加上这个注解就不会等待3s时间 */ @Async public void hello(){ try { System.out.println("数据处理中...."); Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }
二、邮件任务
1、向pom文件中添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2、application.properties配置
spring.mail.username=2425250502@qq.com spring.mail.password=jzkhabcgveioeaec spring.mail.host=smtp.qq.com #spring.mail.properties.mail.smtp.ssl.enable=true
3、测试
用qq邮箱向网易邮箱发送邮件
@Autowired JavaMailSenderImpl mailSender; /** * 简单的邮件发送 */ @Test void contextLoads() { SimpleMailMessage message = new SimpleMailMessage(); message.setSubject("重要通知:请各位查收"); //标题 message.setText("今晚7点30分,全体成员到会议室开会"); //内容 message.setTo("18090287931@163.com"); message.setFrom("2425250502@qq.com"); mailSender.send(message); } /** * 复杂的邮件发送 */ @Test void testMail() { MimeMessage mimeMessage = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setSubject("重要通知:请各位查收"); helper.setText("<h2 style='color:red'>今晚7点30分,全体成员到会议室开会<h2/>", true); helper.setTo("18090287931@163.com"); helper.setFrom("2425250502@qq.com"); //文件发送 helper.addAttachment("loginImg.jpg", new File("E:\\liangd\\ylws-04\\web\\img\\loginImg.jpg")); helper.addAttachment("class02.jpg", new File("E:\\liangd\\Documents\\文档\\图片\\lcsz\\class02.jpg")); mailSender.send(mimeMessage); } catch (MessagingException e) { e.printStackTrace(); } }
注意:要在qq邮箱设置-->账户下,开启以下两种服务
三、定时任务
1、启动类上添加@EnableScheduling注解
2、方法上添加@Scheduled注解
package com.donleo.task.service; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; /** * @author liangd * date 2020-12-15 11:09 * code 定时任务 */ @Service public class ScheduledService { /** * cron 参数顺序 * second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几). * * 示例: * 0/4 * * * * MON-SAT 表示星期一到星期六中每4秒执行一次 * * 【0 0/5 14,18 * * ?】 每天14点整,和18点整,每隔5分钟执行一次 * 【0 15 10 ? * 1-6】 每个月的周一至周六10:15分执行一次 * 【0 0 2 ? * 6L】每个月的最后一个周六凌晨2点执行一次 * 【0 0 2 LW * ?】每个月的最后一个工作日凌晨2点执行一次 * 【0 0 2-4 ? * 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次; */ @Scheduled(cron = "0/4 * * * * MON-SAT") public void scheduled(){ System.out.println("定时任务"); } }
分类:
SpringBoot
标签:
Task
, SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix