- 异步任务
- 邮件发送 time
- 定时任务
异步任务:
1、定义一个异步方法,用休眠3s中模拟需要处理的任务,3s后控制台打印输出信息。
@Async // 开启异步注解
@Service
public class AsyncService {
@Async // 开启异步注解
public void sleep(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("处理一个异步消息");
}
}
1、控制类调用该方法
@RestController
public class AsyncController {
@Autowired
AsyncService asyncService;
@RequestMapping("/hello")
public String hello(){
asyncService.sleep();
return "ok";
}
}
3、main方法中开启异步(@EnableAsync)
@EnableAsync
@SpringBootApplication
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}
邮件任务
1、导入mail依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、配置文件配置
spring.mail.username=1107201071@qq.com
spring.mail.password=kuupqildnnhbjdcb
spring.mail.host=smtp.qq.com
# qq邮箱才需要配置这个
spring.mail.properties.mail.smtp.ssl.enable=true
3、发送简单邮件和带附件邮件的例子
@Autowired
JavaMailSenderImpl javaMailSender;
// 发送简单邮件
@Test
void contextLoads() {
SimpleMailMessage simpleMessage = new SimpleMailMessage();
simpleMessage.setSubject("这是一封简单的测试邮件的主题");
simpleMessage.setText("这是要发送的正文内容");
// 收件人
simpleMessage.setTo("1107201071@qq.com");
// 发件人
simpleMessage.setFrom("1107201071@qq.com");
javaMailSender.send(simpleMessage);
}
// 发送复杂邮件
@Test
void contextLoads2() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setSubject("这是一封发送复杂邮件的主题");
// true 支持发送html代码
mimeMessageHelper.setText("<p style='color:red'>这是复杂邮件的正文,支持html格式</p>",true);
// 通过file添加附件
mimeMessageHelper.addAttachment("url.txt",new File("C:\\Users\\chenwei\\Desktop\\url.txt"));
mimeMessageHelper.setTo("1107201071@qq.com");
mimeMessageHelper.setFrom("1107201071@qq.com");
javaMailSender.send(mimeMessage);
}
定时任务 (企业中常用)
TaskScheduler:任务调度者
TaskExecutor:任务执行者
@EnableScheduling: 开启定时功能注解
@Scheduled: 什么时候执行
Cron表达式: 秒 分 时 日 月 星期
1、主程序中通过注解开启定时任务
@SpringBootApplication
@EnableAsync
@EnableScheduling // 开启定时任务注解
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}
2、编写service方法,使用Cron表达式设置执行的时间
@Service
public class ScheduleService {
static int index = 0;
/*
秒 分 时 天 月 星期
30 15 10 * * ? 每天10点15分30秒执行一次
30 0/5 10,18 * * ? 每天10点和18点 每隔5分钟执行一次
0 15 10 ? * 1-6 每个月的周一到周六10点15分执行一次
*/
@Scheduled(cron = "0/2 * * * * ?", zone = "UTC")
public void hello(){
System.out.println("hello " + ++index);
}
}
网友评论