SpringBoot异步、邮件发送、定时任务

异步任务

  1. 开启异步 @EnableAsync
@EnableAsync  //开启异步任务
@SpringBootApplication
public class SpringbootAsyncDemoApplication {
    public static void main(String[] args) {
      SpringApplication.run(SpringbootAsyncDemoApplication.class, args);
    }
}
  1. 标注需要异步执行的方法 @Async
@Service
public class AsyncService {
    @Async  //标注这是一个异步执行的方法
    public void hello() {
        try {
            Thread.sleep(5000);
            System.out.println("这是异步执行的函数");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

邮件发送

邮件发送,在我们的日常开发中,也非常的多,Springboot也帮我们做了支持

  • 邮件发送需要引入spring-boot-start-mail

  • SpringBoot 自动配置MailSenderAutoConfiguration

  • 定义MailProperties内容,配置在application.yml中

  • 自动装配JavaMailSender

示例
  1. 引入依赖
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  1. 配置相关信息
spring.mail.username=986707252@qq.com
spring.mail.password=你的授权密码
spring.mail.host=smtp.qq.com
# qq邮箱需要配置ssl
spring.mail.properties.mail.mail.smtp.ssl.enable=true

以上信息可以从邮箱设置中获取
在这里插入图片描述
3. 简单的代码示例

@SpringBootTest
class SpringbootAsyncDemoApplicationTests {

    @Autowired
    private JavaMailSenderImpl mailSender;

    @Test
    public void testMailSender1() {
        //发送简单邮件内容
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("986707252@qq.com");
        simpleMailMessage.setTo("123456@qq.com");
        simpleMailMessage.setText("你好呀,3413576768!");
        simpleMailMessage.setSubject("Java Mail 练习Demo");
        //发送邮件
        mailSender.send(simpleMailMessage);

    }

    @Test
    public void testMailSender2() throws MessagingException {
        //发送带附件邮件内容
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);

        mimeMessageHelper.setFrom("986707252@qq.com");
        mimeMessageHelper.setTo("123456@qq.com");
        mimeMessageHelper.setText("你好呀,3413576768!");
        mimeMessageHelper.setSubject("Java Mail 练习Demo");
        //发送附件
        mimeMessageHelper.addAttachment("这是一张图片.jpg", new File("E://壁纸//316774.jpg"));
        mimeMessageHelper.addAttachment("这是一份word文档.doc",new File("C://Desktop//test.doc"));

        //发送邮件
        mailSender.send(mimeMessage);
    }
}

定时任务

两个主要接口

  • TaskExecutor接口
  • TaskScheduler接口

两个主要注解

  • @EnableScheduling
  • @Scheduled

cron表达式

字段允许特殊字符
0~59, - * /
0~59, - * /
小时0~23, - * /
日期1~31, - * / ? L W C
月份1~12, - * /
星期0~7 或者 SUN ~ SAT (其中0和7都是星期日), - * / ? L W C

特殊字符含义:

特殊字符含义
枚举
-区间
*任意
/步长
?日或星期中的冲突匹配
L最后的
W工作日
C和calendar联系计算过的值
#星期,4#2表示第2个星期三

常见的cron表达式

0/2 * * * * ?   表示每2秒 执行任务
0 0/2 * * * ?    表示每2分钟 执行任务
0 0 2 1 * ?   表示在每月的1日的凌晨2点调整任务
0 15 10 ? * MON-FRI   表示周一到周五每天上午10:15执行作业
0 15 10 ? 6L 2002-2006   表示2002-2006年的每个月的最后一个星期五上午10:15执行作
0 0 10,14,16 * * ?   每天上午10点,下午2点,40 0/30 9-17 * * ?   朝九晚五工作时间内每半小时
0 0 12 ? * WED    表示每个星期三中午120 0 12 * * ?   每天中午12点触发
0 15 10 ? * *    每天上午10:15触发
0 15 10 * * ?     每天上午10:15触发
0 15 10 * * ?    每天上午10:15触发
0 15 10 * * ? 2005    2005年的每天上午10:15触发
0 * 14 * * ?     在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * ?    在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ?     在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * ?    在每天下午2点到下午2:05期间的每1分钟触发
0 10,44 14 ? 3 WED    每年三月的星期三的下午2:102:44触发
0 15 10 ? * MON-FRI    周一至周五的上午10:15触发
0 15 10 15 * ?    每月15日上午10:15触发
0 15 10 L * ?    每月最后一日的上午10:15触发
0 15 10 ? * 6L    每月的最后一个星期五上午10:15触发
0 15 10 ? * 6L 2002-2005   2002年至2005年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3   每月的第三个星期五上午10:15触发
示例
  1. 创建ScheduledService @Scheduled
@Service
public class ScheduledService {
    //秒    分    时     日    月    周几
    //0 * * * * MON-FRI
    //注意cron表达式的用法;
    @Scheduled(cron = "0 * * * * 0-7")
    public void hello(){
        System.out.println("hello.....");
    }

  1. 开启定时任务 @EnableScheduling
@EnableAsync  //开启异步任务
@EnableScheduling  //开启定时任务
@SpringBootApplication
public class SpringbootAsyncDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootAsyncDemoApplication.class, args);
    }
}
  1. 直接启动程序,该任务自动执行。
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值