SpringBoot-整合mission-14

异步任务

  1. 介绍:异步任务就是不同步的任务,例如响应了一个请求之后不是同步把响应完成的数据返回给用户,而是等待几秒之后,就类似于线程休眠
  • eg:AsynService中
@Service
public class AsynService {
 //告诉spring这是一个异步的方法--->>需要在主方法中开启异步的功能
    @Async
    public void hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据正在处理");
    }
}

定义一个请求在请求中调用service中的方法(AsynController)

@RestController
public class AsynController {
   @Autowired
   AsynService asynService;
    @RequestMapping("/hello")
   public String hello1(){
        asynService.hello();
       return "ok";
   }
}
  1. 使用springboot中的异步方法
  • 需要在主方法中开启支持异步的注解功能
//开启某个功能通用的-->EnableXXX
//开启异步注解功能
@EnableAsync
@SpringBootApplication
  • 需要在异步的方法中加入如下的注释@Async告诉spring这是一个异步的方法
  • 测试,发现前端直接返回ok,而后台则需要3s的时间才能返回数据正在处理

邮件发送

  1. 在application.properties中配置自己的邮件信息
spring.mail.username=xxxxxxxxx@qq.com
spring.mail.password=xxxxxxxxx(此处配置的不是密码而是授权码)
spring.mail.host=smtp.qq.com

#开启加密验证(qq邮箱)
spring.mail.properties.mail.smtp.ssl.enable=true

  1. 简单的邮件发送的实现
 @Autowired
    JavaMailSenderImpl mailSender;
    @Test
    void contextLoads() {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setSubject("这是一个 自动邮件功能的测试");//发送的题目
        simpleMailMessage.setText("测试2");//发送的内容
        simpleMailMessage.setTo("xxxxxxxxx@qq.com");//接收的邮件地址
        simpleMailMessage.setFrom("xxxxxxxxx@qq.com");//发送的地址
        mailSender.send(simpleMailMessage);
    }
  1. 复杂的邮件发送
 @Autowired
    JavaMailSenderImpl mailSender;
  @Test
    void contextLoads2() throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true,"utf-8");
        helper.setSubject("这是一个自动邮件功能增强的测试");
        helper.setText("<p style='color:green'>测试3</p>",true);
        helper.addAttachment("1.png",new File("C:\\Users\\Administrator\\Desktop\\1.png"));
        helper.setTo("xxxxxxx@qq.com");
        helper.setFrom("xxxxxxxx@qq.com");
        mailSender.send(mimeMessage);
    }
  1. 复杂邮件发送的方法的封装
/**
     *
     * @param html:
     * @param subject
     * @param test
     * @throws MessagingException
     * @Author sli
     */
 @Autowired
    JavaMailSenderImpl mailSender;
    public void sendMail(Boolean html, String subject,String test) throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html);
        helper.setSubject(subject);
        helper.setText(test,true);
        helper.addAttachment("1.png",new File("C:\\Users\\Administrator\\Desktop\\1.png"));
        helper.setTo("xxxxxxxx@qq.com");
        helper.setFrom("xxxxxxx@qq.com");
        mailSender.send(mimeMessage);
    }

定时任务

  1. 在主方法中加入注解@Enablescheduling开启定时功能的注解
  2. 在service中新建一个方法
@Service
public class ScheduledService {
   // 0 35 10 * * ?         每天的10点35分00秒执行一次
    @Scheduled(cron = "0 35 10 * * 0-7")
    public void hello(){
        System.out.println("hello()被执行");
    }
}
  1. 常用的cron表达式
(1)0 0 2 1 * ? *   表示在每月的1日的凌晨2点调整任务
(2)0 15 10 ? * MON-FRI   表示周一到周五每天上午10:15执行作
(3)0 15 10 ? 6L 2002-2006   表示2002-2006年的每个月的最后一个星期五上午10:15执行作
(4)0 0 10,14,16 * * ?   每天上午10点,下午2点,4点
(5)0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时
(6)0 0 12 ? * WED    表示每个星期三中午12点
(7)0 0 12 * * ?   每天中午12点触发
(8)0 15 10 ? * *    每天上午10:15触发
(9)0 15 10 * * ?     每天上午10:15触发
(10)0 15 10 * * ? *    每天上午10:15触发
(11)0 15 10 * * ? 2005    2005年的每天上午10:15触发
(12)0 * 14 * * ?     在每天下午2点到下午2:59期间的每1分钟触发
(13)0 0/5 14 * * ?    在每天下午2点到下午2:55期间的每5分钟触发
(14)0 0/5 14,18 * * ?     在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(15)0 0-5 14 * * ?    在每天下午2点到下午2:05期间的每1分钟触发
(16)0 10,44 14 ? 3 WED    每年三月的星期三的下午2:10和2:44触发
(17)0 15 10 ? * MON-FRI    周一至周五的上午10:15触发
(18)0 15 10 15 * ?    每月15日上午10:15触发
(19)0 15 10 L * ?    每月最后一日的上午10:15触发
(20)0 15 10 ? * 6L    每月的最后一个星期五上午10:15触发
(21)0 15 10 ? * 6L 2002-2005   2002年至2005年的每月的最后一个星期五上午10:15触发
(22)0 15 10 ? * 6#3   每月的第三个星期五上午10:15触发

posted @ 2021-10-01 10:46  1_f  阅读(26)  评论(0)    收藏  举报