快乐写代码

任务

2020-11-26  本文已影响0人  上行彩虹人

异步任务:

1、定义一个异步方法,用休眠3s中模拟需要处理的任务,3s后控制台打印输出信息。
@Async // 开启异步注解

@Service
public class AsyncService {
    @Async // 开启异步注解
    public void sleep(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("处理一个异步消息");
    }
}

1、控制类调用该方法

@RestController
public class AsyncController {

    @Autowired
    AsyncService asyncService;

    @RequestMapping("/hello")
    public String hello(){
        asyncService.sleep();
        return "ok";
    }
}

3、main方法中开启异步(@EnableAsync)

@EnableAsync
@SpringBootApplication
public class TaskApplication {
    public static void main(String[] args) {
        SpringApplication.run(TaskApplication.class, args);
    }
}

邮件任务

1、导入mail依赖

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

2、配置文件配置

spring.mail.username=1107201071@qq.com
spring.mail.password=kuupqildnnhbjdcb
spring.mail.host=smtp.qq.com

# qq邮箱才需要配置这个
spring.mail.properties.mail.smtp.ssl.enable=true

3、发送简单邮件和带附件邮件的例子

 @Autowired
    JavaMailSenderImpl javaMailSender;
    // 发送简单邮件
    @Test
    void contextLoads() {
        SimpleMailMessage simpleMessage = new SimpleMailMessage();
        simpleMessage.setSubject("这是一封简单的测试邮件的主题");
        simpleMessage.setText("这是要发送的正文内容");
        // 收件人
        simpleMessage.setTo("1107201071@qq.com");
        // 发件人
        simpleMessage.setFrom("1107201071@qq.com");

        javaMailSender.send(simpleMessage);
    }

    // 发送复杂邮件
    @Test
    void contextLoads2() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
        mimeMessageHelper.setSubject("这是一封发送复杂邮件的主题");
        // true 支持发送html代码
        mimeMessageHelper.setText("<p style='color:red'>这是复杂邮件的正文,支持html格式</p>",true);
        // 通过file添加附件
        mimeMessageHelper.addAttachment("url.txt",new File("C:\\Users\\chenwei\\Desktop\\url.txt"));
        mimeMessageHelper.setTo("1107201071@qq.com");
        mimeMessageHelper.setFrom("1107201071@qq.com");
        javaMailSender.send(mimeMessage);
    }

定时任务 (企业中常用)

TaskScheduler:任务调度者
TaskExecutor:任务执行者
@EnableScheduling: 开启定时功能注解
@Scheduled: 什么时候执行
Cron表达式: 秒 分 时 日 月 星期
1、主程序中通过注解开启定时任务

@SpringBootApplication
@EnableAsync
@EnableScheduling // 开启定时任务注解
public class TaskApplication {
    public static void main(String[] args) {
        SpringApplication.run(TaskApplication.class, args);
    }
}

2、编写service方法,使用Cron表达式设置执行的时间

@Service
public class ScheduleService {
    static int index = 0;
    /*
         秒 分 时 天 月 星期
         30 15 10 * *  ? 每天10点15分30秒执行一次
         30 0/5 10,18 * * ? 每天10点和18点 每隔5分钟执行一次
         0 15 10 ? * 1-6 每个月的周一到周六10点15分执行一次
     */
    @Scheduled(cron = "0/2 * * * * ?", zone = "UTC")
    public void hello(){
        System.out.println("hello " + ++index);
    }
}
上一篇下一篇

猜你喜欢

热点阅读