1、环境搭建
2、编写service层,实现延迟3000毫秒
package com.kuang.service; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @Service public class AsyncService { public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("数据正在处理。。。。"); } }
3、编写controller,调用service层
package com.study.controller; import com.study.service.AsyncService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class AstncController { @Autowired AsyncService asyncService; @RequestMapping("/hello") public String hello(){ asyncService.hello();//延迟三秒 return "ok"; } }
运行测试
1、在主启动类开启异步功能
@SpringBootApplication @EnableAsync //开启异步注解功能 public class Springboot09TestApplication { public static void main(String[] args) { SpringApplication.run(Springboot09TestApplication.class, args); } }
2、在service层方法中添加注解
@Service public class AsyncService { //告诉spring这是一个异步的方法,执行这个方法的时候会自动开启线程池 @Async public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("数据正在处理。。。。"); } }
3、运行测试
瞬间响应,进入到页面
发送和接收邮件
1、导入邮件依赖
<!--导入mail配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2、设置QQ邮箱,开启POP3/SMTP协议
进入QQ邮箱,点击设置
点击账户
点击开启POP3/SMTP协议
获取邮箱授权码
3、编写properties
# 应用名称 spring.application.name=springboot-09-test # 应用服务 WEB 访问端口 server.port=8080 #邮箱名称 spring.mail.username=963330213@qq.com #邮箱密码(授权码) spring.mail.password=toxvosulbehkbcai #发送的服务器 spring.mail.host=smtp.qq.com #开启加密验证 spring.mail.properties.mail.smtl.ssl.enable=true
一个简单的邮件
package com.kuang; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; @SpringBootTest class Springboot09TestApplicationTests { @Autowired JavaMailSenderImpl mailSender; @Test void contextLoads() { //简单邮件 SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); //邮箱标题 simpleMailMessage.setSubject("邮件标题"); //邮箱内容 simpleMailMessage.setText("邮件内容"); //接受邮件 simpleMailMessage.setTo("963330213@qq.com"); //发送邮件 simpleMailMessage.setFrom("963330213@qq.com"); mailSender.send(simpleMailMessage); } }
5、运行测试
编写测试类
@Autowired JavaMailSenderImpl mailSender; @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("C:\\Users\\Desktop\\1.jpg")); //文件地址 helper.addAttachment("2.jpg",new File("C:\\Users\\Desktop\\1.jpg")); //发送 helper.setFrom("963330213@qq.com"); //接收 helper.setTo("963330213@qq.com"); mailSender.send(mimeMessage); }
运行测试
1、在主启动类添加开启定时任务功能的注解
@SpringBootApplication @EnableAsync //开启异步注解功能 @EnableScheduling //开启定时功能 public class Springboot09TestApplication { public static void main(String[] args) { SpringApplication.run(Springboot09TestApplication.class, args); } }
2、编写service层,测试定时任务功能
@Service public class ScheduledService { //@Scheduled : 什么时候执行 //在一个特定时间执行这个方法:Timer //cron表达式 秒 分 时 月 日 星期 /* 0 35 2 * * ? 每天凌晨2:35分执行 0 0/5 10,18 * * ? 每天10点和18点,每隔5分钟执行一次 0 15 10 ? * 1-6 每个月的周一到周六10点15分执行一次 */ //每隔两秒执行一次 @Scheduled(cron = "0/2 * * * * ?") public void hello(){ System.out.println("hello被执行了"); } }
3、运行测试