springboot 与 任务(异步任务,邮件任务,定时任务)

springboot 与 任务

一、异步任务

@EnableAsync  +  @Async  // 开启异步任务注解功能
    
@EnableAsync   标识在启动类上面
@Async         标识在方法上面,标识异步方法

二、定时任务

定时任务:

  •  项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。
    
  •  Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor、TaskScheduler接口。
    
  • 两个注解:@EnableScheduling、 @Scheduled

@EnableScheduling 标识在启动类上面

@Scheduled 标识在方法上面

package cn.mesmile.task.service;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author zb
 * @date 2019/12/3 21:05
 * @Description:
 */
@Service
public class ScheduledService {

    /**
     *   cron:
     *   second(秒), minute(分), hour(时), day of month (日), month(月), and day of week(周几)
     *
     *   0 * * * * MON-FRI
     *   周一到周五 每分钟整数秒
     *   hello world......2019-12-03 09:41:00
     *   hello world......2019-12-03 09:42:00
     *   hello world......2019-12-03 09:43:00
     *
     *   1,2,3 * * * * MON-FRI
     *   1-3 * * * * MON-FRI
     *   hello world......2019-12-03 09:52:01
     *   hello world......2019-12-03 09:52:02
     *   hello world......2019-12-03 09:52:03
     *
     *  0/3 * * * * MON-FRI
     *  hello world......2019-12-03 09:54:33
     *  hello world......2019-12-03 09:54:36
     *  hello world......2019-12-03 09:54:39
     */
    @Scheduled(cron = "0/3 * * * * MON-FRI")
    public void hello() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println("hello world......"+simpleDateFormat.format(new Date()));
    }

    /**
     *     特殊字符  代表含义
     *       ,        枚举
     *       -        区间
     *       *        任意
     *       /        步长
     *       ?  日/星期冲突匹配L最后
     *       W      工作日
     *       C   和calendar联系后计算过的值
     *       #   星期,4#2,第2个星期三
     *
     *        字段      允许值                  允许的特殊字符
     *         秒        0-59                     ,* /
     *         分        0-59                     ,* /
     *         小时      0-23                     ,* /
     *         日期      1-31                     ,*?/LWC
     *         月份      1-12                     ,* /
     *        星期   0-7或SUN-SAT0,7是SUN       ,-*?/LC#
     */

}

三、邮件任务

导入spring支持的邮件jar包:

<!--springboot支持发送邮件的方法-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
package cn.mesmile.task;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.nio.charset.MalformedInputException;

@SpringBootTest
class TaskApplicationTests {

    @Autowired
    JavaMailSender javaMailSender;

    @Test
    void contextLoads() {
        System.out.println("hello world");
    }

    @Test
    void testSendMail(){
        // 发送简单消息
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        // 接收方邮箱
        simpleMailMessage.setTo("s@aliyun.com");
        simpleMailMessage.setSubject("这是文章的标题。。。。");
        simpleMailMessage.setText("这是文本内容哦..........");
        // 发送方邮箱
        simpleMailMessage.setFrom("10@qq.com");
        javaMailSender.send(simpleMailMessage);
    }

    @Test
    void testSendMails() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);

        mimeMessageHelper.setSubject("通知--今晚开会");
        mimeMessageHelper.setText("<b style='color:red'>今天 7:30 开会</b>",true);
        // 接收方邮箱
        mimeMessageHelper.setTo("s@aliyun.com");
        // 发送方邮箱
        mimeMessageHelper.setFrom("1047@qq.com");

        // 上传文件
        mimeMessageHelper.addAttachment("docker容器.txt",new File("C:\\Users\\SuperZheng\\Desktop\\demo\\docker容器.txt"));

        javaMailSender.send(mimeMessage);

    }

}

# password 为 授权码
# ssl:enable 允许 ssl
spring:
  mail:
    password: lntcjmgj
    username: 10@qq.com
    host: smtp.qq.com
    properties:
      mail:
        smtp:
          ssl:
            enable: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值