springboot中的任务处理

springboot中的任务处理

一.异步任务

在开发中有时用户提交的数据,后台需要一定时间才能做出响应,此时用户在前台也不能在等待中,此时就应该先开启异步请求处理,利用多线程,先给前台反馈,后台另一线程去处理数据。

1.创建异步处理请求

package com.springboot.assigment.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * @author panglili
 * @create 2022-07-12-8:19
 */

//异步请求注解,表示此类开启异步请求
@Async
@Service
public class AsyncService {
    public void Asycn(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("数据处理中……");
    }
}

此程序中,后台需要三秒等待才能处理好请求。

2.controller调用异步业务请求的方法

package com.springboot.assigment.controller;

import com.springboot.assigment.service.AsyncService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author panglili
 * @create 2022-07-12-8:23
 */
@Controller
public class AsycnController {

    @Autowired
    AsyncService asyncService;

    @RequestMapping("/asycn")
    @ResponseBody
    public String asycn(){
        asyncService.Asycn();
        return "ok";
    }
}

在执行完对异步业务的调用之后才会返回给前台一个ok!

3.主程序开启异步处理,创建多线程池!

@EnableAsync 
//开启异步处理,底部开启了一个线程池存放异步请求的处理

总结:实现异步处理只需要加上两个注解,在异步请求服务上加上@Async在主程序上加上@EnableAsync 即可!

二.邮件任务

1.导包

<!--邮件任务-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2.配置文件properties

spring.mail.username=2558008051@qq.com
spring.mail.password=lswpwkcyalcsdhjc


#开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true

spring.mail.host=smtp.qq.com

spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=false
spring.mail.properties.mail.smtp.starttls.required=false

3.邮件发送方法

class SpringbootApplicationTests {

    @Autowired
    JavaMailSender mailSender;
    @Test
    void contextLoads() {

        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("你好");
        message.setText("这是发送内容~");
        message.setTo("2558008051@qq.com");
        message.setFrom("2558008051@qq.com");
        mailSender.send(message);

    }

}

简单的邮件发送功能完成!

三.定时执行任务

1.写一个需要定时执行的任务

package com.springboot.assigment.service;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

/**
 * @author panglili
 * @create 2022-07-12-10:00
 */
@Service
public class ScheduledService {


    //cron表达式定义时间
    //注解定时任务的时间
    @Scheduled(cron="0 15 10 * * ?")
    public void hello(){
        System.out.println("hello,你被执行了~");
    }
}

2.主程序开启定时调用

@EnableScheduling//开启定时功能支持

只需要两个简单的注解

@Scheduled://注解定时任务的时间

@EnableScheduling://开启定时功能支持

ok!


文章标签:

原文连接:https://www.cnblogs.com/lumanmanqixiuyuanxi/p/16469086.html

相关推荐

浅谈spring-createBean

Hippo4J v1.3.1 发布,增加 Netty 监控上报、SpringCloud Hystrix 线程池监控等特性

SpringBoot集成文件 - 集成POI之Excel导入导出

Spring基础入门

SpringWeb 拦截器

这样优化Spring Boot,启动速度快到飞起!

Java开发学习(十四)----Spring整合Mybatis及Junit

SpringCloud OpenFeign 自定义响应解码器

SpringCloud 微服务接口调用组件 - OpenFeign 简介

SpringBoot到底是什么?

【Spring】IOC与解耦合

SpringBoot数据库管理 - 用flyway对数据库管理和迁移

Spring源码(十六)-ConfigurationClassPostProcessor

2022 年最新 Java 后端薪资统计出炉,看看你有没有拖后腿

SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?

【Spring源码解析】Spring XML方式获取bean源码初步解析

SpringMVC底层——请求参数处理流程描述

Spring 通过注解来存储和读取对象

SpringBoot接口 - API接口有哪些不安全的因素?如何对接口进行签名?

SpringDataJpa的使用 -- 一对一、一对多、多对多 关系映射