阅读 138

SpringBoot 异步入门&简单邮件&定时任务

简介

  • 同步:任务按先后步骤执行,一般就按代码从上到下执行,前面的任务不完成就不会执行后面的任务
  • 异步:不按步骤执行,执行快的不等待执行慢的,能先完成就先完成

样例

一般步骤

  1. 在main方法上 @EnableAsync,开启异步
  2. 在需要异步的方法上面, @Async,告诉spring这个方法是异步方法
  3. 其他方法就不会管被@Async标记的方法是否完成,

代码

  • service
@Service
public class HelloAsyn {
    @Async//告诉spring这个方法是异步方法
    public void asyn(){
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
复制代码
  • controller
@Controller
public class MyController {
    @Autowired
    HelloAsyn helloAsyn;
    @GetMapping("/h")
    @ResponseBody
    public String a(){
        helloAsyn.asyn();
        return "asynchronous";
    }
}
复制代码
  • main方法
@EnableAsync//开启异步
@SpringBootApplication
public class SpringBootAsynchronousApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAsynchronousApplication.class, args);
    }
}
复制代码

image.png

简单邮件

  • 导入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>2.4.4</version>
</dependency>
复制代码
  • application.properties
spring.mail.username=2585@qq.com
#自己的QQ账户
spring.mail.password=ffjkxcqamcriebie
# 密码从qq邮箱,设置->账户里面的SMTP服务的授权码
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true
复制代码
  • java代码
@SpringBootTest
class SpringBootMailApplicationTests {
    @Autowired
    JavaMailSenderImpl mailSender;
    @Test
    void contextLoads() {
        //简单邮件
        SimpleMailMessage mailMessage = new SimpleMailMessage();//简单邮件
        mailMessage.setTo("yangyanhua32@gmail.com");//发到何处
        mailMessage.setFrom("2585290270@qq.com");//何人所发
        mailMessage.setSubject("来自spring boot的邮件");//所发邮件之标题
        mailMessage.setText("spring boot 真不错,赶紧学");//所发邮件之内容
        mailSender.send(mailMessage);//将邮件发之
    }

}
复制代码

定时任务

步骤:

  1. 在程序入口,也就是main方法注解@EnableScheduling
  2. @Scheduled(cron ="" )

代码

  • main
@EnableScheduling//开启定时任务
@SpringBootApplication
public class SpringBootMailApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMailApplication.class, args);
    }

}
复制代码
  • 定时任务
@Service
public class ScheduledService {
    //cron表达式
    //秒 分 时 日  月 周
    @Scheduled(cron ="0/2 * * * * ?" )//每两秒执行一次
    public void scheduled(){
        System.out.println("定时任务,请勿回复");
    }
}
复制代码
文章分类
后端
文章标签