• 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!

  • 相关阅读:
    Linux 驱动开发 五十六:Buildroot 笔记
    【C语言经典100例题-70】求一个字符串的长度(指针)
    使用百度EasyDL实现立体库智能盘点
    笔记 4 :linux 0.11 中继续分析 0 号进程创建一号进程的 fork () 函数
    代码块小知识
    高项_第十四章信息文档管理与配置管理
    23.Gateway 动态路由,负载均衡(springcloud)
    【日常业务开发】Java实现异步编程
    DNS域名解析服务
    pip install 下载速度太慢
  • 原文地址:https://www.cnblogs.com/lumanmanqixiuyuanxi/p/16469086.html