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 服务

image-20200803114230764

然后会有动态授权码什么的,类似于密码,这个一定要记住,其他的邮箱也是如此。

2、导入依赖

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

3、邮件发送配置

image-20200803114911248

4、编写测试类

image-20200803115428898

启动测试,结果如下:

image-20200803115547919

2、复杂的邮件

配置文件不变,只需要修改一下测试类

image-20200803121446441

进行测试,哦吼报错!

image-20200803122415006

解决办法,将默认25端口改为465端口

image-20200803122507728

image-20200803122547639

只做端口配置还是不行的,所以再将协议改为smtps >>>原文链接:https://www.cnblogs.com/east7/p/13406120.html

接着测试:

image-20200803122723997

成功!!!

定时任务

TaskScheduler  //任务调度者
TaskExecutor   //任务执行者 
@EnableScheduling //开启定时功能的注解
@Scheduled   //什么时候执行

cron:计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到 cron 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的任务。

1、开启功能

image-20200803123429587

2、编写service,并启动项目

image-20200803132046214

如上,在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.