• 【SpringBoot-任务 03】


    主要包含:异步任务,定时任务,邮件任务

    一、异步任务

     在Java应用中,绝大多数情况下都是同步完成交互的,但是和第三方交互时会出现延迟,springboot提供了异步处理的方式解决了这种问题

    1、主要有两个注解完成:

    @Aysnc   告诉springboot这是一个异步任务
    @EnableAysnc   开启异步任务   --->启动类上加此注解

    @Service
    public class Taskyibu {
    
        //告诉Springboot这是一个异步方法
        @Async
        public void hello(){
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            System.out.println("seccess!");
        }
    }

    二、定时任务

    springboot提供了两个注解:@EnableScheduling(开启定时任务注解)、@Scheduled(设置定时计划注解)

    cron表达式

    常用的集中定时计划

    每一位代表对应的
    second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几).
    0 * * * * MON-FRI 【0 0/5 14,18 * * ?】 每天14点整,和18点整,每隔5分钟执行一次 【0 15 10 ? * 1-6】 每个月的周一至周六10:15分执行一次 【0 0 2 ? * 6L】每个月的最后一个周六凌晨2点执行一次 【0 0 2 LW * ?】每个月的最后一个工作日凌晨2点执行一次 【0 0 2-4 ? * 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次;

    下面是针对秒,不通的写法

    【0 * * * * MON-SAT】  周一到周六整秒执行
    【0-4 * * * * MON-SAT】 周一到周六0到4秒执行
    【0,1,2,3,4 * * * * MON-SAT】周一到周六0到4秒执行0/4 * * * * MON-SAT】周一到周六0到4秒执行
    @Service
    public class SchedulerService {
    
        @Scheduled(cron = "0 * * * * MON-SAT")
        public void test(){
            System.out.println("hello!");
        }
    
    }

    对那个类想做定时任务,就可以在类上加@Scheduled

    三、邮件任务

    Spring Boot 自动配置MailSenderAutoConfiguration

    发邮件的原理是:在springboot中配置邮箱服务器,然后通过配置的邮箱服务器发送邮件

    1、引入pom文件

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>

    2、application.properties文件内配置邮件服务器

    spring.mail.username=1832785141@qq.com
    spring.mail.password=qskacaztriqrbhdj
    spring.mail.host=smtp.qq.com
    #需要配置一个ssl的安全配置
    spring.mail.properties.mail.smtp.ssl.enable=true

    已qq邮箱举例:

    password不是qq登录时的邮箱,而是qq授权后生成的授权码

     host可以通过开启任务的第二项IMAP/SMTP服务,点击进去查看

    3、自动装配JavaMailSender发送邮件

    package com.wufq.task;
    
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    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 org.springframework.test.context.junit4.SpringRunner;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class TaskApplicationTests {
    
        //自动注入JavaMailSender邮件发送器
        @Autowired
        JavaMailSenderImpl mailSender;
    
    
        //发送文本类型的简单邮件
        @Test
        public void contextLoads() {
            //创建简单的邮件发送对象
            SimpleMailMessage message = new SimpleMailMessage();
            //邮件设置
            message.setSubject("通知-今天放假"); //设置标题
            message.setText("下午2点放假!"); //设置文本
            message.setTo("wufuqiangtest@163.com","wufuqiangtesting@163.com"); //收信人,可以给多个邮箱发送
            message.setFrom("1832785141@qq.com"); //发送人
    
            mailSender.send(message);
    
        }
    
        //发送带附件这样的复杂邮件
        @Test
        public void test() throws MessagingException {
            //1、创建一个复杂的消息邮件
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);//如果要上传文件,设置为true
    
            //邮件设置
            helper.setSubject("通知-中秋放假"); //设置标题
            helper.setText("<b style='color:red'>放假三天</b>",true); //设置文本,true为html
            helper.addAttachment("1.jpg",new File("/Users/wufq/Desktop/1.jpg"));
            helper.addAttachment("2.jpg",new File("/Users/wufq/Desktop/2.jpg"));
            helper.setTo("wufuqiangtest@163.com");//收信人,可以给多个邮箱发送
            helper.setFrom("1832785141@qq.com"); //发送人
    
            mailSender.send(mimeMessage);
        }
    
    }
  • 相关阅读:
    SuperMap-iServer-单点登录功能验证(CAS)
    Oracle数据库的链接数目超标
    转载---javascript 定时器总结
    JMeter使用文档
    转载--改变ubuntu默认编码为GBK
    遥感数据下载
    Supermap iCloudManager -负载均衡
    XCode: 如何添加自定义代码片段
    imageNamed和dataWithContentsOfFile的区别(1)
    imageNamed 与 imageWithContentsOfFile的区别
  • 原文地址:https://www.cnblogs.com/frankruby/p/15305821.html
Copyright © 2020-2023  润新知