springboot与任务
目录
异步任务
在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在 处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用 多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完 美解决这个问题。
两个注解:@EnableAysnc、@Aysnc
|
|
定时任务
项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前 一天的日志信息。Spring为我们提供了异步执行任务调度的方式,提供 TaskExecutor 、TaskScheduler 接口。
两个注解:@EnableScheduling、@Scheduled
cron表达式:
注意:
?
是用于日和星期冲突匹配,两者只要有一个精确值,另一个就写?
- 星期中的0和7都代表周日
- 4#2 第2个星期四
演示:
|
|
邮件任务
-
邮件发送需要引入spring-boot-starter-mail
1 2 3 4
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
-
Spring Boot 自动配置MailSenderAutoConfiguration
-
定义MailProperties内容,配置在application.yml中
一封邮件的发送流程如下:
所以需要配置发件人的账号密码以及发件人所在邮箱服务器的地址,注意账号密码由于邮箱服务器都做了安全设置,需要开启服务生成授权码,配置文件中账号密码需要设置成该授权码。
上面两个服务的授权码都是一样的,服务器地址看上图中下方提示,最终的配置如下:
1 2 3 4
spring.mail.username=lienhui1992@yeah.net spring.mail.password=RFQRKKYMLDUTLPNV # 注意这里填写smtp服务器的密码 spring.mail.host=smtp.yeah.net
-
自动装配JavaMailSender
-
测试邮件发送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
package com.eh.springboottask; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.internet.MimeMessage; import java.io.File; @SpringBootTest class SpringbootTaskApplicationTests { @Autowired JavaMailSenderImpl mailSender; /** * 测试简单邮件发送 */ @Test public void contextLoads() { SimpleMailMessage message = new SimpleMailMessage(); //邮件设置 message.setSubject("通知-今晚开会"); message.setText("今晚7:30开会"); message.setTo("892084947@qq.com"); // 需要保证登录人邮箱跟发信人邮箱一致,否则会报:553 Mail from must equal authorized user message.setFrom("lienhui1992@yeah.net"); mailSender.send(message); } /** * 测试复杂邮件发送 * @throws Exception */ @Test public void test02() throws Exception { //1、创建一个复杂的消息邮件 MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); //邮件设置 helper.setSubject("通知-今晚开会"); // 设置样式 helper.setText("<b style='color:red'>今天 7:30 开会</b>", true); helper.setTo("892084947@qq.com"); helper.setFrom("lienhui1992@yeah.net"); //添加附件 helper.addAttachment("1.jpg", new File("/Users/david/my/picture/1.jpg")); helper.addAttachment("2.jpg", new File("/Users/david/my/picture/2.jpg")); mailSender.send(mimeMessage); } }
演示效果: