任务

和==多线程==有关

异步任务

  1. @Service
  2. public class AsynService {
  3. public void hello() {
  4. try {
  5. Thread.sleep(300);
  6. } catch (InterruptedException e) {
  7. e.printStackTrace();
  8. }
  9. System.out.println("数据正在处理...");
  10. }
  11. }

同时

  1. @RestController
  2. public class AsynController {
  3. @Autowired
  4. private AsynService asynService;
  5. @RequestMapping("/hello")
  6. public String hello() {
  7. asynService.hello(); // 会停止三秒,转圈
  8. return "ok";
  9. }
  10. }

那么用户体验就是十分的差

只需要

在对应的异步方法加上注解

  1. @Service
  2. public class AsynService {
  3. // 告诉Spring 这是一个异步方法
  4. @Async
  5. public void hello() {
  6. try {
  7. Thread.sleep(300);
  8. } catch (InterruptedException e) {
  9. e.printStackTrace();
  10. }
  11. System.out.println("数据正在处理...");
  12. }
  13. }

同时

启动类 开启异步注解

  1. @EnableAsync // 开启异步注解

邮件发送

1、导入依赖

  1. <!-- javax.mail -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-mail</artifactId>
  5. </dependency>

2、开启并导入POP3/SMTP服务创建的授权码

  1. spring.mail.username=1412148742@qq.com
  2. spring.mail.password=(开启POP3/SMTP服务创建的授权码)
  3. spring.mail.host=smtp.qq.com
  4. # 加密验证(QQ邮箱特有,其他不需要)
  5. spring.mail.properties.mail.smtp.ssl.enable=true

3、进行测试

  1. @Autowired
  2. JavaMailSenderImpl mailSender;
  3. @Test
  4. void contextLoads() {
  5. // 一个简单的邮件
  6. SimpleMailMessage mailMessage = new SimpleMailMessage();
  7. mailMessage.setSubject("这是主题");
  8. mailMessage.setText("这个文本内容");
  9. mailMessage.setTo("dafran@yeah.net");
  10. mailMessage.setFrom("1412148742@qq.com");
  11. mailSender.send(mailMessage);
  12. }
  13. @Test
  14. void contextLoads2() throws MessagingException {
  15. // 一个复杂的邮件
  16. MimeMessage mimeMessage = mailSender.createMimeMessage();
  17. // 组装
  18. MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
  19. helper.setSubject("这是主题plus");
  20. helper.setText("<p style='color:red'>这个文本内容plus</p>",true);
  21. // 附件
  22. helper.addAttachment("1.jpg",new File("F:\\Pictures\\1.png"));
  23. helper.addAttachment("2.jpg",new File("F:\\Pictures\\1.png"));
  24. helper.setTo("dafran@yeah.net");
  25. helper.setFrom("1412148742@qq.com");
  26. mailSender.send(mimeMessage);
  27. }

可以作为工具类进行封装

定时任务

  1. TaskScheduler // 任务调度器
  2. TaskExecutor // 任务执行者
  3. @EnableScheduling // 开启定时任务功能的注解
  4. @Scheduled // 什么时候执行
  5. Cron表达式

1、启动类开启

  1. @EnableScheduling // 开启定时任务功能的注解

2、对应方法开启

  1. @Service
  2. public class ScheduledService {
  3. // cron表达式
  4. // 秒、分、时、日、月、周几
  5. @Scheduled(cron = "0 * * * * 0-7")
  6. public void hello() {
  7. System.out.println("hello,被执行");
  8. }
  9. }

Crontab表达式在线生成工具