- 功能扩展
- 1、异步任务
- 2、邮件发送
- 3、定时任务
SpringBoot集成了这些功能,我们只需要开启这些功能,并进行调用即可!
-
创建一个SpringBoot项目并添加Web支持
-
创建一个Service包,编写测试代码
//部分代码 @Service public class AsyncService { @Async//加上该注解标志着这是一个异步方法 public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("执行了hello方法~"); } } -
创建一个Controller包,编写控制类进行测试
//部分代码 @RestController public class TestController { @Autowired public AsyncService asyncService; @RequestMapping("/async") public String hello(){ asyncService.hello(); return "ok"; } } -
在主启动类中开启异步任务注解功能
//部分代码 @EnableAsync//开启异步任务注解功能 @SpringBootApplication public class FeatureApplication { public static void main(String[] args) { SpringApplication.run(FeatureApplication.class, args); } }
总结
- 开启异步任务核心注解:@Async @EnableAsync
- 异步任务的特点就是:前端立刻相应,异步任务悄悄执行~
-
导入相关依赖
org.springframework.boot spring-boot-starter-mail -
配置文件设置
spring.mail.username=2224909659@qq.com spring.mail.password=zldkdyoodxzxebhg spring.mail.host=smtp.qq.com # ssl spring.mail.properties.mail.stmp.ssl.enable=true
-
分析MailSenderAutoConfiguration 配置类
-
JavaMailSenderImpl 发送邮件工具类,调用该类里面的send(MailMessage) 方法
-
SimpleMailMessage 简单邮件:实现了MailMessage 接口
-
MimeMessage 复杂邮件:继承了Message 类
- 创建方式:构造器、利用JavaMailSenderImpl 工具类的createMimeMessage 方法
-
简单测试
//部分代码 @Autowired(required = false)//标志该“属性”可以为空 public JavaMailSenderImpl javaMailSender; @Test void contextLoads() { //发送一个简单邮件 SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setSubject("麻腾飞学习邮件发送"); simpleMailMessage.setText("要培养分析源码的能力"); simpleMailMessage.setFrom("2224909659@qq.com"); simpleMailMessage.setTo("2224909659@qq.com"); javaMailSender.send(simpleMailMessage); } @Test void test01() throws MessagingException { //发送一个复杂邮件 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true); //组装 messageHelper.setSubject("麻腾飞加油啊!"); messageHelper.setText("每天最少学习6个小时
",true); //添加附件 messageHelper.addAttachment("mtf.jpg",new File("D:\java自学资料\网站模板\博客项目参考\头像图片\a6.jpeg")); messageHelper.setFrom("2224909659@qq.com"); messageHelper.setTo("2224909659@qq.com"); javaMailSender.send(mimeMessage); }
项目开发某一业务指定时间执行
//对应接口 TaskExecutor接口 TaskScheduler接口 //对应注解 @EnableScheduling @Scheduled
测试:
-
创建一个ScheduledService类(service包下)
//主要代码 @Scheduled(cron = "30 27 11 * * 0-7")//参数为cron表达式 //秒 分 时 日 月 星期几 public void test(){ System.out.println("到点啦~"); } -
启动类开启异步任务调度支持
@EnableScheduling//开启定时任务支持 @SpringBootApplication public class FeatureApplication { public static void main(String[] args) { SpringApplication.run(FeatureApplication.class, args); } }



