一:实现一个简单的异步任务
1.不适用spring自带的异步注解
service层的AsyncService 类
package com.example.demo.service;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Service
public class AsyncService {
//多线程的简单列子
public void heelo(){
try{
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("数据正在处理......");
}
}
controller层的
package com.example.demo.controller;
import com.example.demo.service.AsyncService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class AsynController {
@Autowired
AsyncService asyncService;
@RequestMapping("/hello")
@ResponseBody
public String hello(){
asyncService.heelo();
return "我爱你";
}
}
页面会等待3秒后出现”我爱你“
2.使用spring自带的@Async列子,页面会先出现“我爱你”
在启动类中增加@EnableAsync
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
@EnableAsync //开启异步注解功能
@SpringBootApplication
public class Demo8Application {
public static void main(String[] args) {
SpringApplication.run(Demo8Application.class, args);
}
}
@Service
public class AsyncService {
//多线程的简单列子
@Async
public void heelo(){
try{
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("数据正在处理......");
}
}
二:spingboot实现邮件发送
1.导入javax.mail
<!-- 导入javax.mail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.yaml文件中进行配置
spring:
mail:
username: 2032764143@qq.com
password: ftswigcyobfhfcgd
host: smtp.qq.com
properties:
mail:
smtl:
ssl:
enable: true
3.在测试类尝试发送邮件
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
//一个简单的邮件
SimpleMailMessage mailMessage = new SimpleMailMessage();
//主题
mailMessage.setSubject("蓝桥杯大赛官方通知");
//内容
mailMessage.setText("您好!参赛者,由于您长时间没有刷题,导致您的蓝桥杯参赛资格被取消,您的" +
"参赛费用不会被退回!希望你再接再厉!");
//发送者
mailMessage.setFrom("2032764143@qq.com");
// mailMessage.setTo("2032764143@qq.com");
//接收者
mailMessage.setTo("2311053076@qq.com");
mailSender.send(mailMessage);
}
实现一个能发送html和图片的代码
@Test
void contextLoads1() throws MessagingException {
//一个复杂的邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setSubject("努力学习");
mimeMessageHelper.setText("<p style='color:red>花堪须折直须折,莫待无花空折枝.</p>",true);
mimeMessageHelper.addAttachment("1.png",new File("C:\\Users\\86151\\Pictures\\好看的图片\\登陆\\1.png"));
mimeMessageHelper.setFrom("2032764143@qq.com");
mimeMessageHelper.setTo("2032764143@qq.com");
mailSender.send(mimeMessage);
}
将上面的代码编写成一个类
/*
* @param html
* @throws
* @param subject,text
* */
public void sendMail(Boolean html,String subject,String text) throws MessagingException {
//一个复杂的邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,html);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(text,true);
mimeMessageHelper.addAttachment("1.png",new File("C:\\Users\\86151\\Pictures\\好看的图片\\登陆\\1.png"));
mimeMessageHelper.setFrom("2032764143@qq.com");
mimeMessageHelper.setTo("2032764143@qq.com");
mailSender.send(mimeMessage);
}
三:定时任务
1.定时任务需要两个注解
@EnableScheduling // 开启定时功能的注解,放到启动类里面
@Scheduled //什么时候执行
cron表达式

建立一个ScheduledService类
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class ScheduledService {
//cron表达式
/**
* 秒 分 时 日 月 周几
* 我的当前时间时15:55分
* ?代表你不确定现在是星期几
* 0-7代表每天都执行
* 0 56 15 * * ? 每天的15点56分0秒执行一次
* 0 0/5 15 10,18 * ? 每天10点和18点,每隔五分种执行一次
*
*
* */
@Scheduled(cron = "0 56 15 * * ?")
public void hello(){
System.out.println("hello,你被执行了");
}
}
版权声明:本文为qq_51269815原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。