0%

SpringBoot-任务

SpringBoot-任务

1、异步任务

  1. 在Application上

    1
    2
    3
    4
    /**
    * @EnableAsync:开启异步注解
    */
    @EnableAsync
  2. 异步处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @Service
    public class AsyncService {
    /**
    * 告诉Spring这是一个异步的
    */
    @Async
    public void hello(){
    try{
    Thread.sleep(3000);
    }catch (InterruptedException e){
    e.printStackTrace();
    }
    System.out.println("处理数据中");
    }
    }

2、定时任务

  1. 在Application上

    1
    2
    3
    4
    /**
    * @EnableScheduling:开启定时任务注解
    */
    @EnableScheduling
  2. 定时任务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @Service
    public class ScheduredService {
    /**
    * cron
    * 秒,分,时,日,月,周
    * 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点期间,每个整点执行一次
    */
    //@Scheduled(cron = "0 * * * * MON-SAT")
    //@Scheduled(cron = "0,1,2,3,4 * * * * MON-SAT")
    //@Scheduled(cron = "0-4 * * * * MON-SAT")
    //@Scheduled(cron = "0/4 * * * * MON-SAT") // 每4秒执行一次
    @Scheduled(cron = "0 * * * * MON-SAT")
    public void hello(){
    System.out.println("hello...");
    }
    }

    cron表达式:

    字段 允许值 --
    0-59 ,-*/
    0-59 ,-*/
    小时 0-23 ,-*/
    日期 1-31 ,-*?/LWC
    月份 1-12 ,-*/
    星期 0-7或SUN-SAT 0,7是SUN ,-*?/LC#

    ,:枚举

    -:区间

    *:任意

    /:步长

    ?:日/星期冲突匹配

    L:最后

    W:工作日

    C:和calendar联系后计算过的值

    #:星期,4#2,第2个星期四

3、邮件任务

  1. 导入依赖

    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
  2. 配置

    1
    2
    3
    4
    spring.mail.username=email@qq.com
    spring.mail.password=?????????
    spring.mail.host=smtp.qq.com
    spring.mail.properties.mail.smtp.ssl.enable=true
  3. 测试

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
@SpringBootTest
class Springboot04TaskApplicationTests {

@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("主题");
message.setText("内容");
// message.setTo("目标@qq.com");
// message.setFrom("来源@qq.com");
message.setTo("qq1528498238@gmail.com");
message.setFrom("1528498238@qq.com");
mailSender.send(message);
}

@Test
public void test0() throws MessagingException {
// 创建一个复杂的消息邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setSubject("主题");
mimeMessageHelper.setText("<b style='color:red'>红色</b>",true);
// 上传文件
mimeMessageHelper.addAttachment("1.jpg",new File("/home/zephon/Pictures/1.jpg"));
mimeMessageHelper.setTo("qq1528498238@gmail.com");
mimeMessageHelper.setFrom("1528498238@qq.com");
mailSender.send(mimeMessage);
}

}