当前位置: 首页 > news >正文

chapter13:springboot与任务

Spring Boot与任务视频

1. 异步任务

使用注解 @Async 开启一个异步线程任务, 需要在主启动类上添加注解@EnableAsync开启异步配置;

@Service
public class AsyncService {@Asyncpublic void hello() {try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("处理数据中。。。");}
}

2. 定时任务

Spring提供了异步任务调度的方式,比如TaskExecutor,TaskScheduler接口。

也可以配合两个注解使用, 分别是@EnableScheduling、@Scheduled

cron表达式生成器
在这里插入图片描述
0,7 表示周日; 1-6表示周一至周六;

quartz框架不一样,1表示周日;2表示周一;

@Service
public class ScheduledService {/*** 秒,分,时,日, 月, 星期, 年*/
//    @Scheduled(cron = "0 * * * * MON-SAT")
//    @Scheduled(cron = "0,1,2,3,4 * * * * MON-SAT")
//    @Scheduled(cron = "0-4 * * * * MON-SAT")@Scheduled(cron = "0/4 * * * * MON-SAT")public void scheduled() {System.out.println("scheduled...");}
}

3. 邮件任务

邮件发送需要引入spring-boot-starter-mail;

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

springboot自动配置 MailSenderAutoConfiguration, 里面提供了JavaMailSenderImpl来发送邮件。

MailProperties中封装了mail相关的配置属性,可以在application.properties配置文件中修改配置。

@Configuration
@ConditionalOnClass({ MimeMessage.class, MimeType.class })
@ConditionalOnMissingBean(MailSender.class)
@Conditional(MailSenderCondition.class)
@EnableConfigurationProperties(MailProperties.class)
@Import(JndiSessionConfiguration.class)
public class MailSenderAutoConfiguration {private final MailProperties properties;private final Session session;public MailSenderAutoConfiguration(MailProperties properties,ObjectProvider<Session> session) {this.properties = properties;this.session = session.getIfAvailable();}@Beanpublic JavaMailSenderImpl mailSender() {JavaMailSenderImpl sender = new JavaMailSenderImpl();if (this.session != null) {sender.setSession(this.session);}else {applyProperties(sender);}return sender;}// ....
}    

定义MailProperties内容,配置在application.properties中;密码需要在邮箱官网登录后生成第三方客户端登录的授权码。

spring.mail.username=wang-qz@qq.com
spring.mail.password=xxxxxxxxxxx
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true

并不是直接从zhangsan@qq.com发送到lisi@163.com,中间需要经过各自的邮箱服务器的通信才能发送邮件。
在这里插入图片描述

测试邮件发送;

@SpringBootTest
@RunWith(SpringRunner.class)
public class Springboot04TaskApplicationTests {@Autowiredprivate JavaMailSenderImpl javaMailSender;@Testpublic void contextLoads() {// 发送简单的邮件SimpleMailMessage message = new SimpleMailMessage();message.setSubject("通知-今晚7:00开会");message.setText("讨论项目进度");message.setFrom("1848276756@qq.com");message.setTo("wang-qz@foxmail.com");javaMailSender.send(message);}@Testpublic void test02() throws MessagingException {// 创建一个复杂的邮件MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);mimeMessageHelper.setSubject("通知-早上9:30开会");mimeMessageHelper.setText("投产评审及代码走查,请提前准备好<b style='color:red;'>投产包</b>");// 添加附件mimeMessageHelper.addAttachment("pom.xml", new File("pom.xml"));mimeMessageHelper.setFrom("wang-qz@qq.com");mimeMessageHelper.setTo("wang-qz@foxmail.com");javaMailSender.send(mimeMailMessage);}
}
http://www.lryc.cn/news/111491.html

相关文章:

  • (十一)大数据实战——hadoop高可用之HDFS手动模式高可用
  • problem(3):python IDE和python解释器
  • 【C语言进阶篇】模拟实现通讯录 (内附源码)
  • Python web实战之 Django 的模板语言详解
  • 使用ChatGPT编写技术文档
  • Java超级玛丽小游戏制作过程讲解 第四天 创建并完成常量类03
  • webpack基础知识八:说说如何借助webpack来优化前端性能?
  • JAVA SE -- 第十五天
  • macOS 环境变量加载探究
  • 在程序中如何判断该线程的线程id(get_id())的返回值是一个无效值
  • ffmpeg-ffplay代码架构简述
  • ⛳ 多线程面试-什么是多线程上下文切换?
  • vb+SQL车辆管理系统设计与实现
  • java的枚举类
  • 基于java早餐店点餐系统源码设计与实现
  • ODOO16如何处理采购运输正常损耗的成本价核算?
  • 【数据预测】基于白鲸优化算法BWO的VMD-KELM光伏发电功率预测 短期功率预测【Matlab代码#54】
  • 函数式编程-将过程作为返回值的应用:分步过程
  • Mysql-学习笔记
  • 【雕爷学编程】Arduino动手做(187)---1.3寸OLED液晶屏模块2
  • Windows用户如何安装新版本cpolar内网穿透
  • MacBookPro安装Win10,Wifi不能用了,触控板不能用了(2)
  • 理解C++中变量的作用域
  • vue+element-ui给全局请求设置一个loading样式
  • 传球游戏
  • 智能卡通用安全检测指南 思度文库
  • Maven设置阿里云路径(防止加载过慢)
  • JavaScript原型链污染漏洞复现与防范
  • 初识MySQL数据库之用户管理
  • JVM 类文件结构(class文件)