异步任务,邮件上传与定时任务

异步任务,邮件上传与定时任务

  • 异步任务

service

@Service
public class AsynsService {
    @Async//注册异步注解
    public void testHello() {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据正在处理中");
    }

}

controller层

@RestController
public class AsyncController {
    @Autowired
    AsynsService asynsService;

    @RequestMapping("/hello")
    public String testHello() {
        asynsService.testHello();
        return "ok";
    }
}

启动类

@EnableAsync//开启异步注解
@SpringBootApplication
public class SbDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SbDemoApplication.class, args);
    }

}

即可完成异步任务

  • 邮件发送

导入依赖

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

application.properties

server.port=8080
spring.mail.username=2548057768@qq.com
spring.mail.password=okqrjdykjvprecdh
spring.mail.host=smtp.qq.com
#加密验证
spring.mail.properties.mail.smtp.ssl.enable=true

测试

@SpringBootTest
class SbDemoApplicationTests {
    @Autowired
    JavaMailSenderImpl mailSender;
    @Test
    void contextLoads() {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setSubject("wodiaonimade");
        simpleMailMessage.setText("nimade");
        simpleMailMessage.setTo("2548057768@qq.com");
        simpleMailMessage.setFrom("2548057768@qq.com");
        mailSender.send(simpleMailMessage);
    }
    @Test
    void contextLoads2() throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject("wodiaoniamde");
            helper.setText("<p style ='color:red'>wodiaoniamde</p>",true);
            helper.addAttachment("2050074.jpg",new File("C:\\Users\\优小熊Xx\\Desktop\\2050074.jpg"));
            helper.setTo("1315453629@qq.com");
            helper.setFrom("2548057768@qq.com");
            mailSender.send(mimeMessage);
    }
}
  • 定时任务

service层

@Service
public class SheduledService {
    @Scheduled(cron = "0 * * * * 0-7")
      void test(){
        System.out.println("nimade");
    }
}

启动类

@EnableAsync//开启异步注解
@EnableScheduling
@SpringBootApplication
public class SbDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SbDemoApplication.class, args);
    }

}

特殊字符:

cron表达式允许特殊字符有:

  1. 星号:*号表示匹配该区域的合法的任意值。例如:0 * 17 * * ? 表示的是每天17点每分钟激发一次。

  2. 问号:? 号只能用在日和周域上,但是不能在这两个域上同时使用。可以这么理解?是"我 并 不 关 心 在 该 域 上 是 什 么 值”例: 0 * 17 * * ? 表示的是每天17点每分钟都激发。

  3. 逗号:逗号 (,) 是用来在给某个域上指定一个值列表范围。例:0 0-5 14 * * ?表示每天14点到14:05期间的每1分钟触发一次事 件。

  4. 斜杠:斜杠 (/) 是用于时间表的递增,左边是开始触发时间,右边是每隔固定时间触发一次事件,如秒所在的域的值是5/15,表示5秒、20秒、35秒、50秒的时候都触发一次事件

  5. 中划线:中划线 (-) 用于匹配一个特定的范围值;如时所在的分钟域的值是1-3,表示1、2、3分钟时的时候会触发事件。

  6. L :last,最后的意思,如果是用在天这个域,表示月的最后一天,如果是用在周所在的域,如6L,表示某个月最后一个周五

  7. W:weekday,工作日的意思。如天所在的域的值是15W,表示本月15日最近的工作日,如果15日是周六,触发器将触发上14日周五。如果15日是周日,触发器将触发16日周一。如果15日不是周六或周日,而是周一至周五的某一个,那么它就在15日当天触发事件,W 只能用在指定的日域为单天,不能是范围或列表值。

  8. #:用来指定每个月的第几个星期几,如"6#3" or "FRI#3"表示没个月的第三个星期五,#只能用在周域中。

表达式样例:

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值