spring boot-任务
异步任务
1.主启动类开启注解@EnableAsync
2. 编写service层类
在对应的方法上加上@Async异步注解
@Service
@Slf4j
public class AsyncService {
@Async // 异步任务
public String task() throws InterruptedException {
Thread.sleep(3000);
return "2021/12/29";
}
}
3.编写控制器测试
@RestController
public class AsyncController {
@Autowired
private AsyncService asyncService;
@GetMapping("/hello")
public String hello() throws InterruptedException {
String mst=asyncService.task();
return mst;
}
}
定时任务
1.导入一依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 邮件任务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies>
2.主启动类开启注解
3.编写service层的类
这样,每天的整秒的时候就会触发任务
@Service
@Slf4j
public class ScheduleService {
private static int count=0;
// cron表达式 分别代表 秒-分-时-天-月-周几
@Scheduled(cron = "0 * * * * 0-7")
public void test(){
count++;
log.info("helloworld-"+count);
}
}
cron表达式
@Service
@Slf4j
public class ScheduleService {
private static int count=0;
// cron表达式 分别代表 秒-分-时-天-月-周几
@Scheduled(cron = "0 * * * * 0-7")
public void test(){
count++;
log.info("helloworld-"+count);
}
}
邮件任务
1.导入依赖
<!-- 邮件任务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置文件设置
spring:
mail:
username: 2795348161@qq.com
# 注意:这里不能使用密码,需使用校验码,在QQ邮箱中的设置-账户获取
password: anayncplhiwudddi
host: smtp.qq.com
properties:
mail:
smtl:
ssl:
enable: true #开启加密验证
3.编写测试类
这里分为简单邮件发送和复杂邮件发送(可以发送图片,文件等)
@SpringBootTest
@Slf4j
public class mailTest {
@Autowired
// 注意:该类时邮件依赖自己提供的,用于发送邮件
JavaMailSenderImpl javaMailSender;
// 简单邮件发送
@Test
public void mail(){
SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
// 主题设置
simpleMailMessage.setSubject("小狂胜你好鸭");
// 邮件内容
simpleMailMessage.setText("感谢狂胜大哥大");
// 接收人
simpleMailMessage.setTo("2795348161@qq.com");
// 发送人
simpleMailMessage.setFrom("2795348161@qq.com");
javaMailSender.send(simpleMailMessage);
log.info("邮件发送成功");
}
// 复杂邮件发送
@Test
public void complexMail() throws MessagingException {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
File file=new File("C:\\Users\\HJX\\Desktop\\jiaozhi.jpg");
// 组装 mime:多用途
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
if(file.exists()){
helper.addAttachment("jiaozi.jpg",file);
}else{
log.error("找不到"+file.getName()+"这个文件");
}
helper.setSubject("饺子");
helper.setText("今天的饺子真好吃,你要来尝尝吗?");
helper.setFrom("2795348161@qq.com");
helper.setTo("2795348161@qq.com");
javaMailSender.send(mimeMessage);
}
}