springboot实现异步任务、邮件发送、定时任务

异步任务

@RestController
public class HelloController {
    @Autowired
    HelloService helloService;

    @GetMapping("/hello")
    String hello(){
        helloService.Hello();
        return "Hello";
    }
}
@Service
public class HelloService {
    public void Hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("i'm sleeping");
    }
}

调用/hello的接口,会发现网页延迟了3秒才返回了结果。这时候要开启异步任务。

在启动类上加上@EnableAsync注解,在异步任务的方法上加上@Async注解即可。

@Service
public class HelloService {

    @Async
    public void Hello(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("i'm sleeping");
    }
}

再次测试,直接返回了Hello,而控制台的输出在三秒后姗姗来迟。

发送邮件

首先导入依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

然后去配置application.yml的邮箱信息(非qq邮箱):
请添加图片描述
邮箱配置信息(qq邮箱)需要先在qq邮箱中开启并获得pop3/smtp服务的授权码:
请添加图片描述
发送简单邮件:

	@Autowired
	JavaMailSenderImpl mailSender;
	@Test
	void contextLoads() {
		SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
		simpleMailMessage.setFrom("此处填入发送方邮箱号");
		simpleMailMessage.setTo("此处填入接收方邮箱号");
		simpleMailMessage.setSubject("邮件主题");
		simpleMailMessage.setText("邮件内容");
		mailSender.send(simpleMailMessage);
	}

发送复杂邮件:

	@Autowired
	JavaMailSenderImpl mailSender;
	
	@Test
	void MyTest() throws MessagingException {
		MimeMessage mimeMessage=mailSender.createMimeMessage();
		//如果要添加附件的话,第二个参数需要设置成true
		MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
		helper.setFrom("此处填入发送方邮箱");
		helper.setTo("此处填入接收方邮箱");
		//可以把内容设置成html语言,只要第二个参数是true就可以解析
		helper.setText("<p style='color:purple'>hello</p>",true);
		helper.setSubject("邮件主题");
		helper.addAttachment("attachment.jpg",new File("文件路径"));
		mailSender.send(mimeMessage);
	}

定时任务

首先在启动类上加上@EnableScheduling注解,然后在需要定时的任务上面加上@Scheduled(cron=“此处用cron表达式替换”)。

@Scheduled(cron = "0 * * * * *")
public void SayHello(){
    System.out.println("hello!!");
}

有关cron表达式:
cron表达式详解

在线cron表达式生成器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值