SpringBoot-11-任务
异步任务
(程序不会等,直接往下执行)
实现方式:
主启动类加注解@EnableAsync+方法上加@Async
//开启异步注解功能 @EnableAsync @SpringBootApplication public class TaskTestApplication { public static void main(String[] args) { SpringApplication.run(TaskTestApplication.class, args); } }
@Service public class AsyncService {//异步任务 @Async public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("正在处理……"); } }
@RestController public class AsyncController { @Autowired AsyncService asyncService; @RequestMapping("/hello") public String hello(){ asyncService.hello();//停止3秒,转圈 return "OK"; } }
http://localhost:8080/hello
邮件任务
导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置文件
spring.mail.username=810808038@qq.com spring.mail.password=邮箱管理页面获取密码 spring.mail.host=smtp.qq.com # 开启加密验证 qq特有 spring.mail.properties.mail.smtp.ssl.enable=true
发送邮件(可封装成工具类)
@SpringBootTest class TaskTestApplicationTests { @Autowired JavaMailSenderImpl javaMailSender; @Test void contextLoads() { //发送简单邮件 SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setSubject("你好鸭丶"); simpleMailMessage.setText("sdfsdfsdfsdfsdfsdfsdfsdf"); simpleMailMessage.setFrom("810808038@qq.com"); simpleMailMessage.setTo("1714616511@qq.com"); javaMailSender.send(simpleMailMessage); } @Test void contextLoads2() throws MessagingException { //发送复杂邮件 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true); mimeMessageHelper.setSubject("你好鸭……"); mimeMessageHelper.setText("<p style='color:red'>谢谢你的鸭</p>",true); mimeMessageHelper.addAttachment("1.jpg",new File("C:\\Users\\yu.chen\\Desktop\\1.jpg")); mimeMessageHelper.addAttachment("2.jpg",new File("C:\\Users\\yu.chen\\Desktop\\2.jpg")); mimeMessageHelper.setFrom("810808038@qq.com"); mimeMessageHelper.setTo("1714616511@qq.com"); javaMailSender.send(mimeMessage); } }
定时任务
TaskExecutor任务执行 TaskScheduler任务调度
用法也很简单,就两步
第一步:@EnableScheduling//开启定时功能的注解 第二步:@Scheduled(cron="0 4 14 * * 0-7")//在方法上添加此注解,此方法定时执行 (百度找在线Cron表达式)
https://github.com/ChenCurry/springboot-collection/tree/main/sb-11-task
击石乃有火,不击元无烟!!