异步任务

在启动类上加上@EnableAsync开启异步注解,然后在需要异步执行的方法上加上@Async就行了,springboot会自动开启一个线程去执行这个方法

@Async
public void hello() throws InterruptedException {
Thread.sleep(3000);
System.err.println("处理数据中。。。");
}

定时任务

在启动类上加上@EnableScheduling,然后在需要定时执行的方法上面加上@Scheduled(cron= xxx),具体配置时间,请看详细例子和图:

/**
*second(秒),minute(分),hour(时),day of month(日),month(月), and day week(周几)
*0 * * * *MON-FRI MON-WED这种英文简写也可以用数字代替
* 0 0/5 14,18 * * ? 每天14点整和18点整,每隔5分钟执行一次
* 0 15 10 ? * 1-6 每个月的周一到周六10:15分钟执行一次
* 0 0 2 ? * 6L 每个月的最后一个星期6 凌晨2点执行一次
* 0 0 2 LW * ? 每个月的周后一个工作日 凌晨2点执行一次
* 0 0 2-4 ? * 1#1 每个月的第一个周一凌晨2点到4点每个整点执行一次
* 不想手写这个cron的表达式的话也可以用http://cron.qqe2.com/生成
*/
//@Scheduled(cron = "0 * * * * MON-WED") //意思为星期一到星期三 0秒的时候执行一次
//@Scheduled(cron = "0,1,2,3,4 * * * * MON-WED") //意思为星期一到星期三 0,1,2,3,4秒的时候执行一次
//@Scheduled(cron = "0-4 * * * * MON-WED")//和上面一个意思一样
@Scheduled(cron = "0/4 * * * * MON-WED")//每四秒执行一次
public void hello() {
System.out.println("hello");
}

Springboot使用异步任务,定时任务,邮件任务_java

邮件任务

我这个示例的时用qq邮箱发送,如果要使用别的邮箱的话配置文件有些不同,可以去自己的邮箱中找

导入pom文件:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置文件:

#配置邮件信息
#账号
spring.mail.username=1559810637@qq.com
#密码,此密码不是qq邮箱的密码,而是POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务的授权码
spring.mail.password=xxxxx
#qq邮箱用来发送的地址
spring.mail.host=smtp.qq.com
#设置为安全的,不然会发送不了
spring.mail.properties.mail.smtp.ssl.enable=true

关于这个密码的获取:

Springboot使用异步任务,定时任务,邮件任务_spring_02

Springboot使用异步任务,定时任务,邮件任务_springboot的异步任务_03

示例:

//邮件
@Autowired
JavaMailSenderImpl javaMailSender;
//创建简单邮件
@Test
public void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
//标题
message.setSubject("通知-Test");
//内容
message.setText("邮件测试");
//接收人
message.setTo("xxxx@qq.com");
//发送人
message.setFrom("1559810637@qq.com");
javaMailSender.send(message);
}
//复杂邮件
@Test
public void test02() throws MessagingException {
//创建一个复杂的消息邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
//标题
mimeMessageHelper.setSubject("通知-Test");
//内容,第二个参数是是否开启html格式
mimeMessageHelper.setText("<h1 style='color:red'>邮件测试2</h1>",true);
//接收人
mimeMessageHelper.setTo("xxxxxx@qq.com");
//发送人
mimeMessageHelper.setFrom("1559810637@qq.com");
//上传文件 ,第一个参数为发送附件的名字,第二个为文件,可以是一个file,也可以是io流
// 可以多个
mimeMessageHelper.addAttachment("笔记.pdf",
new File("E:\\学习\\SpringBoot笔记.pdf"));
//发送
javaMailSender.send(mimeMessage);
}