zoukankan      html  css  js  c++  java
  • AsyncTask,MailTask,ScheduledTask

    一,异步任务

      简单的实现,在做具体业务时具体分析

    1.在springboot的启动类上加

    2.在业务层实现异步的具体方法,

    结束~,一个简单的异步任务demo实现啦~

     

    二,邮件任务

    1,导入依赖

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

    2.在peoperties或yaml配置邮件任务驱动的相关信息

    注意:拿qq邮件举例,在写代码前需取自己的qq邮箱开通smtp服务

    spring.mail.username=3342239623@qq.com
    spring.mail.password=zxmutdmcxrmgdafj
    spring.mail.host=smtp.qq.com
    
    #开启加密验证,只有qq的邮箱必须开启ssl,其他大厂邮箱不需要
    spring.mail.properties.mail.smtp.ssl.enable=true

    3.邮件任务简单的实现

    3.1简单邮件发送的实现

    class Springboot09TestApplicationTests {
    
        @Autowired
        JavaMailSender mailSender;
    
        @Test
        void contextLoads() {
    
            //一个简单的邮件任务测试
            SimpleMailMessage mailMessage=new SimpleMailMessage();
    
            mailMessage.setSubject("帅哥,您好");
            mailMessage.setText("励志做一个java全干工程师,来自另一个帅哥给您发送的邮件");
            mailMessage.setTo("xxxxx@qq.com");
            mailMessage.setFrom("xxxxx@qq.com");
    
            mailSender.send(mailMessage);
        }

    3.2复杂邮件格式信息发送实现

    可以自定义发送文本格式(图片视频),也可以设置样式

        @Test
        void contextLoads2() throws MessagingException {
    
            //一个复杂的邮件任务测试
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            //组装
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    
            //正文
            helper.setSubject("帅哥,您好");
            helper.setText("<h1 style='color:red'>您有一张图片请查收</h1>",true);
    
            //附件
            helper.addAttachment("1.jpg",new File("相对路径or绝对路径"));
    
            helper.setTo("xxxxxx@qq.com");
            helper.setFrom("xxxxxx@qq.com");
    
            mailSender.send(mimeMessage);
        }

    扩展:邮件任务是业务开发中比较常见的,所以可以将他封装成一个工具类,以便于以后的使用

    简单的邮件任务工具类

    /**
         *
         * @param html
         * @param subject
         * @throws MessagingException
         * @Author king~
         */
        //自定义封装成一个工具类
        public void sedMail(Boolean html,String subject) throws MessagingException {
    
    
            //一个复杂的邮件任务测试
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            //组装
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html);
    
            //正文
            helper.setSubject(subject);
            helper.setText("<h1 style='color:red'>您有一张图片请查收</h1>",true);
    
            //附件
            helper.addAttachment("1.jpg",new File("相对路径or绝对路径")); 
         helper.setTo(
    "xxxxx@qq.com"); helper.setFrom("xxxx3@qq.com"); mailSender.send(mimeMessage); }

    定时任务

    说明:最早是Timer,相信大家都已经非常熟悉 java.util.Timer 了,它是最简单的一种实现任务调度的方法
    特点:in JDK,简洁,单线程

    但是因为他是单线程所以它是串行的,所以不能满足当前盛行的高并发的需求开发

    因此出现了ScheduledExecutor;

    此篇实现的就是基于ScheduledExecutor的;

    相关注解:

    实现:

    1.在启动类标注 @EnableScheduling  //开启定时任务

    2.在业务层的定时任务相关方法上标注注解  @Scheduled(cron="0/2 * * * * ?")  //表示什么时候执行

    实现一个小demo,

    功能:每两秒给特定邮箱发送垃圾邮件!实现邮件轰炸!

    提示:请不要将合法手段用到不正当的地方

    @Service
    public class ScheduledService {
        @Autowired
        JavaMailSender mailSender;
        //在一个固定的时间执行这个方法~ Timer
        //corn表达式!
        //格式:秒,分,时,日,月,周几~  有在线生成工具
        /*
        * 例子:30 15 10 * * ?  每天的10点15分30秒调度(执行)一次
        *      30 0/5 10,18 * * ?   每天的18点和10点的30秒处,每隔5分钟执行一次
        *      0 15 10 ? * 1-6 周一至周六的10.15分钟执行一次
        * */
        @Scheduled(cron="0/2 * * * * ?")
        public void hello(){
            //一个简单的邮件任务测试
            SimpleMailMessage mailMessage=new SimpleMailMessage();
    
            mailMessage.setSubject("帅哥,您好");
            mailMessage.setText("我是邮件轰炸机,您已被击中");
            mailMessage.setTo("xxxxxxx@qq.com");
            mailMessage.setFrom(xxxxxx@qq.com");
    
            mailSender.send(mailMessage);
            System.out.println("hello,你被执行了~");
        }
    
    }
  • 相关阅读:
    SQL Server数据库一直显示“正在还原”的解决方法
    查看MSSQL 数据表信息使用情况
    sql server 查询缺失的索引
    windows server2012R2 上 .net core IIS 部署--应用程序池 自动停止
    MSSQL 数据库日志文件收缩
    SQL Server GUID转19位字符串
    SQL SERVER 之全文索引使用
    MSSQL 统计整个数据库所有表数据记录数
    freePCRF免费版体验
    Hortonwork Ambari配置Hive集成Hbase的java开发maven配置
  • 原文地址:https://www.cnblogs.com/CL-King/p/14288641.html
Copyright © 2011-2022 走看看