SpringBoot中的任务
异步任务
话不多说直接上代码
Service层
@Service
public class AsyncService {
//告诉spring这是一个异步的方法
@Async
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("数据正在处理");
}
}
Controller层
@RestController
public class AsyncController {
@Autowired
private AsyncService asyncService;
@RequestMapping("/hello")
public String hello(){
//停止三秒
asyncService.hello();
return "OK";
}
}
还需要在启动类上开启异步注解功能
@EnableAsync //开启异步注解功能
@SpringBootApplication
public class SpringbootTaskApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootTaskApplication.class, args);
}
}
测试结果:页面是秒刷新的,但是后台会等三秒后再输出
邮件任务
1、简单的邮件
1、发送邮件需要自己的邮箱开启POP3、STMP 服务
然后会有动态授权码什么的,类似于密码,这个一定要记住,其他的邮箱也是如此。
2、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3、邮件发送配置
4、编写测试类
启动测试,结果如下:
2、复杂的邮件
配置文件不变,只需要修改一下测试类
进行测试,哦吼报错!
解决办法,将默认25端口改为465端口
只做端口配置还是不行的,所以再将协议改为smtps >>>原文链接:https://www.cnblogs.com/east7/p/13406120.html
接着测试:
成功!!!
定时任务
TaskScheduler //任务调度者
TaskExecutor //任务执行者
@EnableScheduling //开启定时功能的注解
@Scheduled //什么时候执行
cron:计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到 cron 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的任务。
1、开启功能
2、编写service,并启动项目
如上,在13点20分的时候输出了语句。
例子:
/**
* 30 15 10 * * ? 每天的10点15分30秒执行一次
* 30 0/5 10,18 * * ? 每天10点和18点每隔5分钟执行一次
* 0 15 10 ? * 1-6 每个月的周一到周六10点15分执行一次
*/
Q.E.D.