美文网首页
springboot-任务

springboot-任务

作者: 桑鱼nicoo | 来源:发表于2020-02-24 18:28 被阅读0次

    使用向导快速创建springboot,其他步骤可参考之前的文章

    异步任务 @EnableAsync, @Async

    @RestController
    public class AsyncController {
        @Autowired
        AsyncService asyncService;
        @GetMapping("/hello")
        public String hello(){
            asyncService.hello();
            return "success";
        }
    }
    
    @EnableAsync // 开启异步注解 功能
    @SpringBootApplication
    public class MySpringBootTaskApplication {
        public static void main(String[] args) {
            SpringApplication.run(MySpringBootTaskApplication.class, args);
        }
    }
    
    @Service
    public class AsyncService {
        /**
         * @Async 告诉spring这是一个异步方法 spring会开启一个线程池
         */
        @Async
        public void hello(){
            try{
                Thread.sleep(3000);
                System.out.println("end...");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("处理数据中...");
        }
    }
    

    定时任务 @EnableScheduling, @Scheduled

    @Service
    public class ScheduleService {
        /**
         * second,minute,hour,day of month(日),month,day of week(周几)
         * 0 0/5 14 18 * ?每天14点,和18点,每隔5分钟执行一次
         * 0 15 10 ? * 1-6 每隔月的周一到周六凌晨10:15分执行一次
         * 0 0 2 ? * 6L 每个月最后一个周六凌晨2点执行一次
         * 0 0 2 LW * ?每个月的最后一个工作日凌晨2点执行一次
         * 0 0 2 2-4 ? * 1#1 每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次
         * 
         */
        @Scheduled(cron = "0/4 * * * * MON-SAT") //周一到周日 每4秒执行一次
        public void hello(){
            System.out.println("hello");
        }
    }
    
    @EnableScheduling // 开启基于注解的定时任务
    @EnableAsync // 开启异步注解 功能
    @SpringBootApplication
    public class MySpringBootTaskApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MySpringBootTaskApplication.class, args);
        }
    }
    
    @RestController
    public class AsyncController {
        @Autowired
        ScheduleService scheduleService;
        @GetMapping("/hello")
        public String hello(){
            scheduleService.hello();
            return "success";
        }
    }
    

    邮件任务

    // pom.xml 注入依赖
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.1</version>
    </dependency>
    

    开启邮箱的POP3/SMTP服务 (如何使用 Foxmail 等软件收发邮件?)

    image.png
    // application.properties
    spring.mail.host=smtp.qq.com
    spring.mail.username=935789914@qq.com
    spring.mail.password=jmorsvzgrvfvbecb
    spring.mail.properties.mail.smtp.ssl.enable=true
    
    @SpringBootTest
    class MySpringBootTaskApplicationTests {
    
        @Autowired
        JavaMailSenderImpl mailSender;
    
        @Test
        void contextLoads() {
            SimpleMailMessage message = new SimpleMailMessage();
    
            message.setSubject("通知");
            message.setText("今天是个特别的日子");
    
            message.setTo("935789914@qq.com");
            message.setFrom("935789914@qq.com");
    
            mailSender.send(message);
        }
    
        @Test
        void test02() throws MessagingException {
            //1. 创建一个复杂的消息邮件
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
    
            //2. 邮件设置
            helper.setSubject("通知");
            helper.setText("<p style=\"color:red;\">今天 7:30 开会</p>",true);
    
            helper.setTo("935789914@qq.com");
            helper.setFrom("935789914@qq.com");
    
            helper.addAttachment("sunset-above-mount-st-michael.jpg",new File("/Users/pengyapan/Downloads/PICTURE/sunset-above-mount-st-michael.jpg"));
    
            mailSender.send(mimeMessage);
        }
    
        @Test
        void test03(){
            System.out.println("\"color:red\"");
        }
    }
    

    相关文章

      网友评论

          本文标题:springboot-任务

          本文链接:https://www.haomeiwen.com/subject/fleyfhtx.html