最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

定时任务

来源:博客园


【资料图】

1、常用定时任务

(1)Java自带的java.util.Timer类timer:配置比较麻烦,时间延后问题timertask:不推荐(2)Quartz框架配置更简单(SSM)xml或者注解(3)SpringBoot使用注解方式开启定时任务启动类里面 @EnableScheduling开启定时任务,自动扫描定时任务业务类 加注解 @Component被容器扫描定时执行的方法加上注解 @Scheduled(fixedRate=2000) 定期执行一次

2、定时实例:2秒定时打印当前时间

(1)每2秒定时打印当前时间,测试

@Componentpublic class TestTask {@Scheduled(fixedRate = 2000) // 两秒执行一次public void sum() {if(stop==true){return;}System.out.println("当前时间:" + new Date());}}

(2)可以控制开始和停止

@Componentpublic class TestTask {private boolean stop;public TestTask() {super();stop=false;}@Scheduled(fixedRate = 2000) // 两秒执行一次public void sum() {if(stop==true){return;}System.out.println("当前时间:" + new Date());}public String stopCron() {if (stop ==false) {stop=true;}System.out.println("DynamicTask.stopCron()"+stop);return "stopCron";}public String startCron() {if (stop ==true) {stop=false;}System.out.println("DynamicTask.startCron()"+stop);return "startCron";}}@RestController@RequestMapping(value="/api/v1/test")public class TestController {@AutowiredTestTask testTask;@RequestMapping("/stopCron")    public String stopCron() {return testTask.stopCron();    }@RequestMapping("/startCron")    public String startCron() {return testTask.startCron();    }}

3、定时任务表达式配置

cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *") 表示每秒fixedRate: 定时多久执行一次(上一次开始执行时间点后xx秒再次执行;)fixedDelay: 上一次执行结束时间点后xx秒再次执行fixedDelayString:  字符串形式,可以通过配置文件指定每天的下午3点30分执行@Scheduled(cron = "0 30 15 * * ?")public void sum() {if(stop==true){return;}System.out.println("当前时间:" + new Date());}

4、邮件开启POP3/SMTP服务:

注意开启完之后,QQ邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。

5、springboot整合邮件发送

(1)pom.xml

org.springframework.bootspring-boot-starter-mail

(2)application.properties

spring.mail.host=smtp.qq.comspring.mail.username=249811636@qq.comspring.mail.password=****************

(3)发送邮件接口

@RestController@RequestMapping(value="email")public class EmailController {@Value("${spring.mail.username}")private String sendName;@Autowiredprivate JavaMailSender javaMailSender;    @RequestMapping("send")    public JsonData sendMail03(){        MimeMessage mMessage=javaMailSender.createMimeMessage();//创建邮件对象        MimeMessageHelper mMessageHelper;        Properties prop = new Properties();        try {            mMessageHelper=new MimeMessageHelper(mMessage,true);            mMessageHelper.setFrom(sendName);//发件人邮箱            mMessageHelper.setTo("249811636@qq.com");//收件人邮箱            mMessageHelper.setSubject("会员卡即将到期提醒");//邮件的主题            mMessageHelper.setText("会员卡即将到期提醒");            javaMailSender.send(mMessage);//发送邮件        } catch (MessagingException e) {            e.printStackTrace();            return new JsonData(0, "邮件发送失败", null);        }return new JsonData(0, "邮件发送成功", null);    }}

(4)测试

6、实验:在用户的用户卡过期前一天发送邮件提醒

关键词: 定时任务 当前时间 发送邮件