简单的实现,在作具体业务时具体分析html
1.在springboot的启动类上加java
2.在业务层实现异步的具体方法,spring
结束~,一个简单的异步任务demo实现啦~springboot
1,导入依赖并发
<!--邮件任务依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2.在peoperties或yaml配置邮件任务驱动的相关信息异步
注意:拿qq邮件举例,在写代码前需取本身的qq邮箱开通smtp服务spring-boot
spring.mail.username=3342239623@qq.com
spring.mail.password=zxmutdmcxrmgdafj
spring.mail.host=smtp.qq.com
#开启加密验证,只有qq的邮箱必须开启ssl,其余大厂邮箱不须要
spring.mail.properties.mail.smtp.ssl.enable=true
3.邮件任务简单的实现高并发
3.1简单邮件发送的实现工具
class Springboot09TestApplicationTests { @Autowired JavaMailSender mailSender; @Test void contextLoads() { //一个简单的邮件任务测试 SimpleMailMessage mailMessage=new SimpleMailMessage(); mailMessage.setSubject("帅哥,您好"); mailMessage.setText("励志作一个java全干工程师,来自另外一个帅哥给您发送的邮件"); mailMessage.setTo("xxxxx@qq.com"); mailMessage.setFrom("xxxxx@qq.com"); mailSender.send(mailMessage); }
3.2复杂邮件格式信息发送实现测试
能够自定义发送文本格式(图片视频),也能够设置样式
@Test void contextLoads2() throws MessagingException { //一个复杂的邮件任务测试 MimeMessage mimeMessage = mailSender.createMimeMessage(); //组装 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); //正文 helper.setSubject("帅哥,您好"); helper.setText("<h1 style='color:red'>您有一张图片请查收</h1>",true); //附件 helper.addAttachment("1.jpg",new File("相对路径or绝对路径")); helper.setTo("xxxxxx@qq.com"); helper.setFrom("xxxxxx@qq.com"); mailSender.send(mimeMessage); }
扩展:邮件任务是业务开发中比较常见的,因此能够将他封装成一个工具类,以便于之后的使用
简单的邮件任务工具类
/** * * @param html * @param subject * @throws MessagingException * @Author king~ */ //自定义封装成一个工具类 public void sedMail(Boolean html,String subject) throws MessagingException { //一个复杂的邮件任务测试 MimeMessage mimeMessage = mailSender.createMimeMessage(); //组装 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html); //正文 helper.setSubject(subject); helper.setText("<h1 style='color:red'>您有一张图片请查收</h1>",true); //附件 helper.addAttachment("1.jpg",new File("相对路径or绝对路径"));
helper.setTo("xxxxx@qq.com"); helper.setFrom("xxxx3@qq.com"); mailSender.send(mimeMessage); }
说明:最先是Timer,相信你们都已经很是熟悉 java.util.Timer 了,它是最简单的一种实现任务调度的方法
特色:in JDK,简洁,单线程
可是由于他是单线程因此它是串行的,因此不能知足当前盛行的高并发的需求开发
所以出现了ScheduledExecutor;
此篇实现的就是基于ScheduledExecutor的;
相关注解:
实现:
1.在启动类标注 @EnableScheduling //开启定时任务
2.在业务层的定时任务相关方法上标注注解 @Scheduled(cron="0/2 * * * * ?") //表示何时执行
实现一个小demo,
功能:每两秒给特定邮箱发送垃圾邮件!实现邮件轰炸!
提示:请不要将合法手段用到不正当的地方
@Service public class ScheduledService { @Autowired JavaMailSender mailSender; //在一个固定的时间执行这个方法~ Timer //corn表达式! //格式:秒,分,时,日,月,周几~ 有在线生成工具 /* * 例子:30 15 10 * * ? 天天的10点15分30秒调度(执行)一次 * 30 0/5 10,18 * * ? 天天的18点和10点的30秒处,每隔5分钟执行一次 * 0 15 10 ? * 1-6 周一至周六的10.15分钟执行一次 * */ @Scheduled(cron="0/2 * * * * ?") public void hello(){ //一个简单的邮件任务测试 SimpleMailMessage mailMessage=new SimpleMailMessage(); mailMessage.setSubject("帅哥,您好"); mailMessage.setText("我是邮件轰炸机,您已被击中"); mailMessage.setTo("xxxxxxx@qq.com"); mailMessage.setFrom(xxxxxx@qq.com"); mailSender.send(mailMessage); System.out.println("hello,你被执行了~"); } }