springboot使用定时器及发送邮件
2020-07-18 04:40
316 查看
1、定时器配置
本人springboot版本为2.2.5,不用额外配置pom.xml及applicaiton.properties属性,直接全注解形式实现,下面用一个简单的实例演示一下:
/** @Component注解使该类能被spring容器扫描到,并实例化为bean存储起来; @EnableScheduling注解代表开启定时器功能 */ @Component @EnableScheduling public class QuartzTask { //@Scheduled注解用在方法上,表示该方法启动定时器功能,cron代表定时器模式 @Scheduled(cron = "*/30 * * * * *") public void quartzTest(){ System.out.println("定时器启动成功!"); } }
简单几个注解就能实现定时器功能,非常方便。
附上cron常见语法及配置方式:
Cron表达式使用格式: Seconds Minutes Hours DayofMonth Month DayofWeek [Year] 秒 分 时 天 月 周 [年] 每个符号代表的含义: 1.*:匹配该域的任意值;如*用在分所在的域,表示每分钟都会触发事件。 2.?:匹配该域的任意值。 3.-:匹配一个特定的范围值;如时所在的域的值是10-12,表示10、11、12点的时候会触发事件。 4.,:匹配多个指定的值;如周所在的域的值是2,4,6,表示在周一、周三、周五就会触发事件(1表示周日,2表示周一,3表示周二,以此类推,7表示周六)。 5./:左边是开始触发时间,右边是每隔固定时间触发一次事件,如秒所在的域的值是5/15,表示5秒、20秒、35秒、50秒的时候都触发一次事件。 6.L:last,最后的意思,如果是用在天这个域,表示月的最后一天,如果是用在周所在的域,如6L,表示某个月最后一个周五。(外国周日是星耀日,周一是月耀日,一周的开始是周日,所以1L=周日,6L=周五。) 7.W:weekday,工作日的意思。如天所在的域的值是15W,表示本月15日最近的工作日,如果15日是周六,触发器将触发上14日周五。如果15日是周日,触发器将触发16日周一。如果15日不是周六或周日,而是周一至周五的某一个,那么它就在15日当天触发事件。 8.#:用来指定每个月的第几个星期几,如6#3表示某个月的第三个星期五。 实用的例子 表达式 含义 “0 0 12 * * ?” 每天12:00触发事件 “0 15 10 ? * *” 每天10:15触发事件 “0 15 10 * * ?” 每天10:15触发事件 “0 15 10 * * ? *” 每天10:15触发事件 “0 15 10 * * ? 2005″ 2005年的每天10:15触发事件 “0 * 14 * * ?” 每天14点开始触发,每分钟触发一次,14:59分结束 “0 0/5 14 * * ?” 每天14点开始触发到14:59分结束的每5分钟触发一次事件 “0 0/5 14,18 * * ?” 每天14点开始到14:59期间和18点到18:59期间的每5分钟触发一次事件 “0 0-5 14 * * ?” 每天14点到14:05期间的每1分钟触发一次事件 “0 10,44 14 ? 3 WED” 每年3月的星期三的14:10和14:44触发一次事件 “0 15 10 ? * MON-FRI” 周一至周五的10:15触发一次事件 “0 15 10 15 * ?” 每月15日10:15触发一次事件 “0 15 10 L * ?” 每月最后一日的10:15触发一次事件 “0 15 10 ? * 6L” 每月的最后一个星期五10:15触发一次事件 “0 15 10 ? * 6L 2002-2005″ 2002年至2005年的每月的最后一个星期五10:15触发一次事件 “0 15 10 ? * 6#3″ 每月的第三个星期五10:15触发一次事件2、发送邮件配置
1)配置pom依赖:
<!-- 配置邮件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2)配置application.properties文件:
#邮件的配置 spring.mail.host=smtp.qq.com spring.mail.username=发件人的邮件 spring.mail.password=密码,注意不是邮箱的登录密码,AUTH。 spring.mail.default-encoding=UTF-8 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true
3)编写邮件工具类:
//@Component加上该注解,spring容器可以扫描到并注入到容器中 @Component public class MailSendUtil { //自动装配JavaMailSender对象,该类在导入的依赖中 @Autowired private JavaMailSender mailSender; //自动读取application.properties文件中的spring.mail.username值并赋予from变量。 @Value("${spring.mail.username}") private String from; public void sendMail(){ try { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage); //设置发件人 mimeMessageHelper.setFrom(from); //设置收件人 mimeMessageHelper.setTo("1234569@qq.com"); //设置邮件标题 mimeMessageHelper.setSubject("今日股市分析:"); //设置邮件正文 mimeMessageHelper.setText("今天是6月19日,今天股市大涨,中兴涨幅超过5%"); //发送邮件 mailSender.send(mimeMessage); } catch (MessagingException e) { e.printStackTrace(); } } }
4)定时器发送邮件:
@Component @EnableScheduling public class QuartzTask { @Autowired private MailSendUtil mailSendUtil; //每隔30秒发送一次邮件 @Scheduled(cron = "*/30 * * * * *") public void quartzTest(){ mailSendUtil.sendMail(); System.out.println("发送邮件成功!"); } }
以上就是一个简单的通过定时器发送邮件的小例子雏形,浅显易懂,有时学习一样技术或者一个知识点并非要先把它想得太复杂,先从最简单的入手,实现了功能,再根据实际需求去深入研究其他高层次的应用,愿与你我共勉~~~~
相关文章推荐
- 使用spring boot email 发送邮件
- Spring Boot 使用465端口发送邮件
- 使用job自动抓取网页数据发送邮件,以springboot服务启动
- Spring Boot中使用JavaMailSender发送邮件
- Spring Boot中使用JavaMailSender发送邮件
- Spring-Boot 定时器+发送邮件案例
- Spring Boot中使用JavaMailSender发送邮件
- 使用spring-boot-starter-mail实现邮件发送
- SpringBoot中使用新线程发送邮件
- spring-boot实战【12】:Spring Boot中使用JavaMailSender发送邮件
- Spring Boot中使用JavaMailSender发送邮件
- springboot2 开启ssl 使用465端口 多线程 发送邮件 ( mail )
- Spring Boot中使用JavaMailSender发送邮件
- 在Spring Boot中使用JavaMailSender发送各类邮件
- 使用Springboot Email实现邮件发送
- 使用springboot发送邮件(前后端分离:使用freemark模板技术)
- Spring Boot中使用JavaMailSender发送邮件
- Spring Boot中使用JavaMailSender发送邮件
- SpringBoot项目使用Activemq队列做邮件异步发送
- 使用Spring Boot发送邮件