springboot+多线程实现邮件发送(定时任务)
一:实现一个简单的异步任务
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文件中进行配置
3.在测试类尝试发送邮件
实现一个能发送html和图片的代码
将上面的代码编写成一个类
三:定时任务
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,你被执行了");
}
}
上一篇:
IDEA上Java项目控制台中文乱码
