SpringBoot-整合mission-14
异步任务
- 介绍:异步任务就是不同步的任务,例如响应了一个请求之后不是同步把响应完成的数据返回给用户,而是等待几秒之后,就类似于线程休眠
- eg:AsynService中
@Service
public class AsynService {
//告诉spring这是一个异步的方法--->>需要在主方法中开启异步的功能
@Async
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("数据正在处理");
}
}
定义一个请求在请求中调用service中的方法(AsynController)
@RestController
public class AsynController {
@Autowired
AsynService asynService;
@RequestMapping("/hello")
public String hello1(){
asynService.hello();
return "ok";
}
}
- 使用springboot中的异步方法
- 需要在主方法中开启支持异步的注解功能
//开启某个功能通用的-->EnableXXX
//开启异步注解功能
@EnableAsync
@SpringBootApplication
- 需要在异步的方法中加入如下的注释
@Async告诉spring这是一个异步的方法 - 测试,发现前端直接返回ok,而后台则需要3s的时间才能返回数据正在处理
邮件发送
- 在application.properties中配置自己的邮件信息
spring.mail.username=xxxxxxxxx@qq.com
spring.mail.password=xxxxxxxxx(此处配置的不是密码而是授权码)
spring.mail.host=smtp.qq.com
#开启加密验证(qq邮箱)
spring.mail.properties.mail.smtp.ssl.enable=true
- 简单的邮件发送的实现
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setSubject("这是一个 自动邮件功能的测试");//发送的题目
simpleMailMessage.setText("测试2");//发送的内容
simpleMailMessage.setTo("xxxxxxxxx@qq.com");//接收的邮件地址
simpleMailMessage.setFrom("xxxxxxxxx@qq.com");//发送的地址
mailSender.send(simpleMailMessage);
}
- 复杂的邮件发送
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads2() throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true,"utf-8");
helper.setSubject("这是一个自动邮件功能增强的测试");
helper.setText("<p style='color:green'>测试3</p>",true);
helper.addAttachment("1.png",new File("C:\\Users\\Administrator\\Desktop\\1.png"));
helper.setTo("xxxxxxx@qq.com");
helper.setFrom("xxxxxxxx@qq.com");
mailSender.send(mimeMessage);
}
- 复杂邮件发送的方法的封装
/**
*
* @param html:
* @param subject
* @param test
* @throws MessagingException
* @Author sli
*/
@Autowired
JavaMailSenderImpl mailSender;
public void sendMail(Boolean html, String subject,String test) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html);
helper.setSubject(subject);
helper.setText(test,true);
helper.addAttachment("1.png",new File("C:\\Users\\Administrator\\Desktop\\1.png"));
helper.setTo("xxxxxxxx@qq.com");
helper.setFrom("xxxxxxx@qq.com");
mailSender.send(mimeMessage);
}
定时任务
- 在主方法中加入注解@Enablescheduling开启定时功能的注解
- 在service中新建一个方法
@Service
public class ScheduledService {
// 0 35 10 * * ? 每天的10点35分00秒执行一次
@Scheduled(cron = "0 35 10 * * 0-7")
public void hello(){
System.out.println("hello()被执行");
}
}
- 常用的cron表达式
(1)0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
(2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作
(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
(4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
(5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
(6)0 0 12 ? * WED 表示每个星期三中午12点
(7)0 0 12 * * ? 每天中午12点触发
(8)0 15 10 ? * * 每天上午10:15触发
(9)0 15 10 * * ? 每天上午10:15触发
(10)0 15 10 * * ? * 每天上午10:15触发
(11)0 15 10 * * ? 2005 2005年的每天上午10:15触发
(12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
(13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
(14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(15)0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
(16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
(17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
(18)0 15 10 15 * ? 每月15日上午10:15触发
(19)0 15 10 L * ? 每月最后一日的上午10:15触发
(20)0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
(21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
(22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

浙公网安备 33010602011771号