springboot异步任务 邮件任务 定时任务

异步任务

springboot中的异步任务需要用到多线程

例:

使service中的业务方法停顿五秒后再执行

@Service
public class AsyncService {
//    设置成异步方法
    @Async
 public void hello(){
     try {
         Thread.sleep(5000);
     } catch (InterruptedException e) {
         e.printStackTrace();
     }
     System.out.println("数据正在处理.....");
 }
}

异步处理,在业务方法上加上@Async,再在springboot中的主运行类上开启Async开关@EnableAsync,从而达到前端页面及时响应,后台异步处理。

邮件任务

pom.xml里面注册springboot邮件的坐标

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

application.properties中配置使用邮箱的信息,包括用户名邮箱和主机(类似于数据库配置)

spring.mail.username=1104142832@qq.com
spring.mail.password=assvogtdfdctggff
spring.mail.host=smtp.qq.com

#qq邮箱独有 开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true

最后可以在测试类中写邮件(其中主题)以下四个属性内容是最低限度的发送邮件配置

class AsyncdemoApplicationTests {
    @Autowired
    JavaMailSenderImpl mailSender;

    @Test
    void contextLoads() {
        SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
//配置的四个邮件内容
        simpleMailMessage.setSubject("邮箱功能测试");
        simpleMailMessage.setText("邮件正文");
        simpleMailMessage.setTo("1104142832@qq.com");
        simpleMailMessage.setFrom("1104142832@qq.com");

        mailSender.send(simpleMailMessage);
    }

}

复杂邮件配置,基本框架与简单邮件配置相同,需要用到mailSender创造的mime message类,可以利用addattachment给邮件添加附件

 void contextLoads2() throws MessagingException {
        MimeMessage message=mailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(message,true);
//这里的第二个参数是多文件传输的允许

        mimeMessageHelper.setSubject("邮件主题");
        mimeMessageHelper.setText("<p style=color:red>邮件内容</p>",true);
//这里的第二个参数是html格式的允许

        File file=new File("C:\\Users\\lenvo\\Desktop\\1.jpg");
        mimeMessageHelper.addAttachment("1.jpg",file);

        mimeMessageHelper.setTo("1104142832@qq.com");
        mimeMessageHelper.setFrom("1104142832@qq.com");
        mailSender.send(message);
    }
}

定时任务

springboot自带整合过的定时任务接口,所以不需要在导入包

-----taskexecutor

-----taskschedule

这两个是定时任务的核心接口API

现在主程序里加上@EnalbleScheduling注解

再在需要使用定时任务的service业务方法上加上@scheduled注解,注意这里要使用cron表达式表示运行时间。Seconds Minutes Hours DayofMonth Month DayofWeek(corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份

(注意定时业务方法是直接跟springboot运行周期绑定的,没有controller调用也会到时间自动执行)

@Service
public class ScheduleService {

    @Scheduled(cron ="0 04 16 * * ?")
    public void helloSchedule(){
        System.out.println("计时任务成功运行!");
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值