SpringBoot与任务

一.异步任务

在方法上打上注解@Async,告诉spring这是一个异步任务,同时开启异步任务的注解,在Springboot的启动类上打上@EnableAsync.
异步任务不会耽误主程序的运行,除非主程序需要使用异步任务的结果,但这时候的异步任务就属于主程序了
Controller

@RestController
public class controller {

    @Autowired
    private AsyncService asyncService;
    
    @GetMapping("/hello")
    public String hello(){
        asyncService.hello();
        return "hello";
    }
}
@Service
public class AsyncService {

    @Async
    public void hello(){
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("处理中...");
    }

}

访问service中hello方法,如果不添加异步任务,那么浏览器上的页面回等到大约5s后才会返回,但是使用使用异步任务后,sucess会很快返回,5s后控制台就会打印出“处理中”

二.定时任务

和异步任务步骤一致,在springboot的启动类上添加注解@EnableSching,表示开启定时任务。在定时任务上添加@Scheduled()执行的时间

    @Scheduled(cron = "* * * * * 0-7")
    public void hi(){
        System.out.println("你好");
    }

cron里面写的是时间点

* * * * * *
第一个*代表的是一分钟某一秒,取值0-59
第二个*代表的是一小时的分,取值0-59
第三个*代表的是一天的小时,取值0-23
第四个*代表的是一个月的天,取值1-31
第五个*代表的是一年中月分,取值1-12
第六个*代表的是一周的周几,取值0-7或者SUN-SAT,0,7都是代表周日
某个值1,2,3,4,… * * * * *
-代表某个区间 例如:0-4,* * * * *
/隔多久执行0/4 * * * * * 隔了四秒执行一次

三.邮件任务

需要导入springboot的支持,spring-boot-starter-mail依赖,
需要在配置文件中配置发送人的账号,密码,主机,安全连接ssl

spring.mail.username=写自己的邮箱
spring.mail.password=密码时生成的授权码,看下图
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true

邮箱需要开启pop3/smtp
IMAP/SMTP
开启时需要付费短信,一毛一条
在这里插入图片描述

@Autowired
	private JavaMailSender javaMailSender;//springboot提供的发送邮件bean
	@Test
	public void contextLoads() {
		SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
		simpleMailMessage.setSubject("今完上车");
		simpleMailMessage.setFrom("5XXXXXXX@qq.com");//发送人
		simpleMailMessage.setText("一定要记得");
		simpleMailMessage.setTo("XXXXXXXXX88@163.com");收件人
		simpleMailMessage.setSentDate(new Date());
		javaMailSender.send(simpleMailMessage);
	}

附带文件内容的邮件:

	@Test
	public void complexMail() throws MessagingException {
	
		MimeMessage mimeMessage = javaMailSender.createMimeMessage();
		MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);

		mimeMessageHelper.setSubject("上车");
		mimeMessageHelper.setFrom("5XXXXXXX@qq.com");//发送人
		mimeMessageHelper.setText("一定要记得");
		mimeMessageHelper.setTo("XXXXXXXXX88@163.com");
		mimeMessageHelper.setSentDate(new Date());
		mimeMessageHelper.addAttachment("hello.jpg",new File("C:\\w.png"));//附件
		javaMailSender.send(mimeMessage);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值