---恢复内容开始---

  直接步入正题。

异步任务

  异步任务比较简单,只需要两个注解就可以搞定,我们直接来看如何使用:

  1、创建一个service,带上@EnableAsync,就是开启异步任务的注解模式。

  2、在需要异步处理的方法前加上注解@Async,该方法就会按照异步处理了。

import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service; @EnableAsync
@Service
public class AsyncService { @Async
public void asynv() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("数据处理中……");
}
}

  那如何来证明我们的异步处理是可以的呢?

  1、写一个controller,我们浏览器中访问一下之前没有加注解的页面,应该是需要等待3秒,才有相应返回success的;

  2、加上异步处理的注解,我们再次访问,就会发现,相应变的很快了;这就是异步处理任务成功了。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class AsyncController { @Autowired
AsyncService asyncService; @GetMapping("/hello")
public String hello() {
asyncService.asynv();
return "success";
} }

定时任务

  定时任务在平时的工作中,经常被用到,比如日志处理、或者每天凌晨进行自动化脚本、或者每月生成报表之类的。

  同样只需要了解两个注解就可以了。

  我们来创建一个service看下(执行主程序,你会发现,每到0秒的时候就会打印一个hello):

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; @EnableScheduling
@Service
public class ScheduledService { /**
* minute, hour, day of month, month, day of week
* 格式:"0 * * * * 1-5"
* 说明:举例的格式表示周一到周五的每分钟整,如果把0换成*就是每周一到周五的每秒处理任务了
*
* 其他:处理具体值,这个式子中还支持一些特殊符号,比如:
* , 表示 枚举。 1,2,3,4 表示每分钟的1,2,3,4秒的时候执行
* - 表示 区间。 0-4就是0到4秒之间,每秒执行,同上边
* * 表示 任意。 每的意思
* ? 表示 日/星期冲突匹配。 比如我们设置了mon,又设置了每天。那么为了匹配,我们要把*换成?
* / 表示 步长。 0/4就是每4秒执行一次
* L 表示 最后。
* W 表示 工作日。
* C 表示 和calendar联系并计算后的值。
* # 表示 星期,4#2就是第二个星期四。
*/
@Scheduled(cron = "0 * * * * 1-5")
public void scheduled() {
System.out.println("hello");
}
}

  为了更好的帮助理解,这里再举例几个:

    【0 0/5 12,18 * * ?】         每天12点和18点,从整点开始,每隔5分钟执行一次
【0 0 2 ? * 1L】   每天月的最后一个星期一的凌晨2点执行一次

邮件任务

  邮件任务,需要引入这个到pom

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

  为了收发邮件,肯定是要先配置一下邮件的收发方,以及邮件发送的账号和密码(放心不是个人登录密码)。

  注意看下边password和host的填写:

  1.password:我以网易邮箱为例,在邮箱设置里,会有POP3/SMTP这类的设置,我们就是用这种方式来使用邮箱的。当我们勾选了这个SMTP服务以后,会出现一系列的弹窗,让我们确认使用授权码登录第三方邮件的客户端,也就是说,我们用生成的授权码,作为我们需要的邮箱登录密码即可,这个是安全。

  2.host:就是下边红框中的服务器地址了

spring.mail.username=ice@163.com
spring.mail.password=sjaksiquskaosjeq
spring.mail.host=smtp.163.com
# 下边的properties是配置邮件的其他信息,比如一般邮箱都需要这个SSL的安全设置
spring.mail.properties.mail.smtp.ssl.enable=true

  如此一来,我们配置好了邮箱信息,开始写一个测试类看下:

  1.先发送一个简单的邮件做测试,执行测试后,去到收件的邮箱查看,应该就可以看到我们发送的邮件了,表示成功!

@RunWith(SpringRunner.class)
@SpringBootTest
public class TaskApplicationTests { @Autowired
JavaMailSenderImpl javaMailSender; @Test
public void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
// 设置邮件信息
message.setSubject("这个是邮件标题的设置");
message.setText("这个是邮件的内容"); message.setTo("1234@qq.com","xxxx"); // 可以给多人发
message.setFrom("ice@163.com"); // 由谁发送 javaMailSender.send(message);
} }

  2.除了上述这个简单的邮件,我们再看看,如何发送带有html或者附件之类的内容的邮件,然后去到邮箱看看是否成功吧!

    @Test
public void test() throws Exception {
// 创建一个复杂消息的邮件
MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMailMessage, true);
// 发送html格式信息
helper.setSubject("这个是邮件标题的设置");
helper.setText("<b style='color:red'>这个是邮件的内容</b>", true); helper.setTo("1234@qq.com");
helper.setFrom("ice@163.com"); // 由谁发送 // 上传附件
helper.addAttachment("a.jpg", new File("C:\\User\\ice\\Pictures\\a.jpg"));
helper.addAttachment("b.jpg", new File("C:\\User\\ice\\Pictures\\b.jpg")); javaMailSender.send(mimeMailMessage);
}

SpringBoot日记——任务处理 之 异步、定时、邮件的更多相关文章

  1. ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送

    现在邮件发送功能已经是几乎每个系统或网址必备的功能了,从用户注册的确认到找回密码再到消息提醒,这些功能普遍的会用到邮件发送功能.我们都买过火车票,买完后会有邮件提醒,有时候邮件并不是买完票立马就能收到 ...

  2. Elasticsearch索引增量统计及定时邮件实现

    0.需求 随着ELKStack在应用系统中的数据规模的急剧增长,每天千万级别数据量(存储大小:10000000*10k/1024/1024=95.37GB,假设单条数据10kB,实际远大于10KB)的 ...

  3. Celery 异步定时周期任务

    1/什么是Celery Celery 是基于Python实现的模块,用于执行异步定时周期任务的 其结构的组成是由 1.用户任务app 2.管道 broker 用于存储任务 官方推荐 redis rab ...

  4. django、celery异步发邮件

    django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...

  5. SpringBoot 整合 Shiro 密码登录与邮件验证码登录(多 Realm 认证)

    导入依赖(pom.xml)  <!--整合Shiro安全框架--> <dependency> <groupId>org.apache.shiro</group ...

  6. 【java框架】SpringBoot(4)--SpringBoot实现异步、邮件、定时任务

    1.SpringBoot整合任务机制 1.1.SpringBoot实现异步方法 日常开发中涉及很多界面与后端的交互响应,都不是同步的,基于SpringBoot为我们提供了注解方式实现异步方法.使得前端 ...

  7. SpringBoot整合定时任务和异步任务处理 3节课

    1.SpringBoot定时任务schedule讲解   定时任务应用场景: 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类        ...

  8. SpringBoot整合定时任务和异步任务处理

    SpringBoot定时任务schedule讲解 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 timer:配置比较麻烦,时间延后问题, ...

  9. SpringBoot 异步 定时任务 邮件

    springboot异步 一: 在 MyConfiguration.java 中开启注解 @Configuration//指明当前类是一个配置类:就是来替代之前的Spring配置文件@EnableAs ...

随机推荐

  1. Source Insight里头文件注释和函数头的注释

    1.将下述代码拷贝入一个文件,扩展名为em 2.打开BASE工程,添加本文件,并重新同步 3.添加hh_InsertFuncHeader的快捷键,即为函数头注释,光标需要放在函数名那一行,否则无效 4 ...

  2. Pinyin4j实战

    package com.haiyisoft.innovationcenter.pinyin; import org.junit.Test; import net.sourceforge.pinyin4 ...

  3. python第三十一天-----类的封装、继承,多态.....

    封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. cla ...

  4. 前端使用 validate , 根据条件进行动态的验证添加

    需求如下: 审核操作的时候,选择“通过” 就不需要验证审核意见,但是选择的是“不通过”,那么需要进行审核意见验证 <script> $(function () { InitValidate ...

  5. 【PAT】B1068 万绿丛中一点红(20 分)

    一开始因为看见这题就头疼,可费了点时间. 要考虑所有元素,如果忽略外圈元素,最后一个样例过不去. 而且要求只出现一次的元素, 我没有使用map,因为当时还没学,用map储存元素会节约好多代码 #inc ...

  6. Xcode调试LLDB

    一.简介 关于Xcode调试,相信大家很多会用断点调试,今天无意间在苹果开发的群里看到了po,瞬间心中有个疑问:po是什么?下面我就百度搜索了一下,介绍一点皮毛. 首先是LLDB,它的全名是lower ...

  7. 初识SpringCloud微服务

    微服务是一种架构方式,最终肯定需要技术架构去实施. 微服务的实现方式很多,但是最火的莫过于Spring Cloud了.为什么? 后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十 ...

  8. 如何使用 eclipse进行断点 debug 程序

    先给出一段程序,然后通过使用 eclipse 设置断点进行一步步操作看结果 package cn.debug.com; public class Demo18 { public static void ...

  9. 【错误记录】PowerShell 超级无语的语法错误(令人怀疑人生)

    曾经做过测试,本文是本章优秀测试人员的精神,必须定位到原因,不然吃不下饭.其实可以很容易绕过这种问题. 环境: PowerShell 5.1.16299.64 Windows 10 现有代码如下: # ...

  10. eclipse+tomcat测试连接时候HTTP Status 404错误

    想要在eclipse里部署tomcat,结果tomcat单独可以通过连接测试,用eclipse就404了 404肯定都是目录不对,试了半天在eclipse下改了一下配置和文件位置就行了 1.先在菜单栏 ...