##新建一个SpringBoot项目
##开启异步
###在service包新建AsyncController
@Service
public class AsyncService {
//告诉Spring这是一个异步的方法
@Async
public void hello() throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(3000);
System.out.println("结束");
long end = System.currentTimeMillis();
long usedTime = (end-start);
System.out.println("时间"+usedTime);
}
}
###写一个Controller
@RestController
public class AsyncController {
//调用service
@Autowired
AsyncService asyncService;
@RequestMapping("/hello")
public String hello(){
asyncService.hello();
return "ok";
}
}
###需要在主程序开启异步注解
//开启异步注解功能
@EnableAsync //开启异步注解功能
###启动测试
程序会先显示controller里面的方法,返回ok后,就去调度service的任务
这样就实现了异步的效果,用户可以更好的体验,而不是等待service执行后才去返回
![]()
##邮件发送
导入依赖
org.springframework.boot
spring-boot-starter-mail
###配置文件
spring.mail.username=你的邮箱@qq.com
spring.mail.password=开启服务:POP3/SMTP服务 获取密码
服务器183.3.225.42 smtp.qq.com
spring.mail.host=183.3.225.42
开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true
###发送一封简单的邮件
@Autowired
JavaMailSenderImpl javaMailSender;
@Test
void contextLoads() {
//发送一个复杂的邮件
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("芮哥哥你好呀");
message.setText("谢谢你发信息给我");
message.setTo("**@qq.com");接收邮件的qq
message.setFrom("**@qq.com");发送的qq
javaMailSender.send(message);
}
#
> MimeMessageHelper:支持多文件需要加true
@Test
void contextLoads2() throws MessagingException {
//发送一个简单的邮件
MimeMessage message = javaMailSender.createMimeMessage();
//正文 MimeMessageHelper:支持多文件需要加true
MimeMessageHelper messageHelper = new MimeMessageHelper(message,true);
messageHelper.setSubject("你好呀");
//setText:开启true就可以解析标签
messageHelper.setText("<p style='color:red'>谢谢你发信息给我</p>",true);
//附件
messageHelper.addAttachment("第一次.png",new File("第一次.png"));
messageHelper.setTo("10776@qq.com");
messageHelper.setFrom("73060@qq.com");
javaMailSender.send(message);
}
上面的代码运行就可以发送邮件
/**
*MimeMessageHelper:支持多文件需要加true
*
* @param html
* @param subject:文本内容
* @param text:标题
* @throws MessagingException
* setTo:指明收件人
* setFrom:指明发件人
*/
void sendMail(Boolean html,String subject,String text) throws MessagingException {
//发送一个复杂的邮件
MimeMessage message = javaMailSender.createMimeMessage();
//正文
MimeMessageHelper messageHelper = new MimeMessageHelper(message,html);
messageHelper.setSubject(subject);
messageHelper.setText(text,ht睿共享 ml);
//附件
messageHelper.addAttachment("第一次.png",new File("D:\我的文档\桌面\第一次.png"));
messageHelper.setTo("60@qq.com");
messageHelper.setFrom("60@qq.com");
javaMailSender.send(message);
}
##定时任务
需要用到两个接口
TaskExecutor 任务执行者
TaskScheduler 任务调度者@EnableScheduling 在主程序开启定时功能的注解
@Scheduled 什么时候执行
###在controller写一个每两秒执行一次的程序
// 秒 分 时 日 月 周几
//天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
@Scheduled(cron = "0/2 * * * * *")
public void conut() {
System.out.println("执行成功");
}
###@EnableScheduling 在主程序开启定时功能的注解
##可以把发邮件和定时加在一起
###发一个定时邮件
###需要配置
spring.mail.username1769073060@qq.com
spring.mail.password=密码
服务器183.3.225.42 smtp.qq.com
spring.mail.host=183.3.225.42
开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true
###service层
/**
*MimeMessageHelper:支持多文件需要加true
*
* @param html
* @param睿共享 subject:文本内容
* @param text:睿共享 标题
* @throws MessagingException
* setTo:指明收件人
* setFrom:指明发件人
*/
public void mail() throws MessagingException {
void sendMail(Boolean html,String subject,String text) throws MessagingException {
//发送一个复杂的邮件
MimeMessage message = javaMailSender.createMimeMessage();
//正文
MimeMessageHelper messageHelper = new MimeMessageHelper(message,html);
messageHelper.setSubject(subject);
messageHelper.setText(text,html);
//附件
messageHelper.addAttachment("第一次.png",new File("D:\我的文档\桌面\第一次.png"));
messageHelper.setTo("60@qq.com");
messageHelper.setFrom("60@qq.com");
javaMailSender.send(message);
}
}
controller设置定时
//在一个特定的时间执行这个方法 Timer
@RequestMapping("/mail")
//cron
@Scheduled(cron = "0/2 * * * * *")
public String Ma睿共享 il() throws MessagingException {
asyncService.mail();
return "邮件发送成功";
}
###别忘记在主程序加@EnableScheduling //开启定时功能的注解
##一个定时邮件就搞定了