• SpringBoot 学习(八)异步任务,邮件发送和定时执行


    8. 异步任务

    (1) 开启异步注解

    // 启动类
    @EnableAsync
    @SpringBootApplication
    public class TestApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestApplication.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (2) 声明异步方法

    // service
    @Service
    public class AsyncService {
    
        // 声明此方法为异步方法
        @Async
        public void sleep() {
    
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            System.out.println("数据正在处理...");
    
            SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
            Date edate = new Date(System.currentTimeMillis());
            System.out.println("edate:" + formater.format(edate));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    (3) 调用异步方法

    // controller
    @RestController
    public class AsyncController {
    
        @Autowired
        AsyncService asyncService;
    
        @RequestMapping("/sleep")
        public String sleep() {
            SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
            Date sdate = new Date(System.currentTimeMillis());
            System.out.println("sdate:" + formater.format(sdate));
            asyncService.sleep();   // 休眠三秒,等待服务器响应
            return "OK";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    (4) 测试效果

    在这里插入图片描述

    在这里插入图片描述

    9. 邮件发送

    (1) 配置

    # application.properties
    spring.mail.username=1942953841@qq.com
    spring.mail.password=wedahkcfqhwkfdcg
    spring.mail.host=smtp.qq.com
    # qq 邮箱开启加密验证
    spring.mail.properties.mail.smtp.ssl.enable=true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (2) 测试

    @Autowired
    JavaMailSenderImpl mailSender;
    
    // 测试简单邮件发送
    @Test
    void sendSimpleMail() {
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setSubject("Hello");
        mailMessage.setText("Nice to meet you !");
        mailMessage.setTo("486530039@qq.com");
        mailMessage.setFrom("1942953841@qq.com");
        mailSender.send(mailMessage);
    }
    
    // 测试复杂邮件发送
    @Test
    void sendMimeMail() throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
    
        // 组装
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    
        // 正文
        helper.setSubject("Hello");
        helper.setText("

    Nice to meet you !

    "
    , true); // 附件 helper.addAttachment("鬼泣DMC.jpg", new File("C:\\Users\\LENOVO\\Pictures\\鬼泣DMC.jpg")); helper.setTo("486530039@qq.com"); helper.setFrom("1942953841@qq.com"); mailSender.send(mimeMessage); }
    • 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

    10. 定时执行

    (1) 启动定时注解

    // 启动类
    @EnableScheduling   // 开启定时功能
    @SpringBootApplication
    public class TestApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestApplication.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (2) 测试

    @Service
    public class ScheduledService {
    
        // corn 表达式
        // 秒 分 时 日 月 星期
        @Scheduled(cron = "30 * * * * 0-7")
        public void timer30() {
            SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
            Date date = new Date(System.currentTimeMillis());
            System.out.println("Time is " + formater.format(date));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

  • 相关阅读:
    2.【自动驾驶与机器人中的SLAM技术】左乘模型推导ESKF
    【JVM详解&JVM优化】JVM垃圾回收机制
    ES 生命周期管理
    赵运泓:12:5黄金行情走势分析
    「算法刷题宝典」必须知道的知识点和技巧
    Klipper安装
    从编译器对指令集的要求看API设计原则
    ITSS认证从申报到获得证书需要多长时间?
    javascripe :验证是否已存在
    蓝桥杯线上模拟赛——Flex 经典骰子布局
  • 原文地址:https://blog.csdn.net/qq_42651415/article/details/133273088