当前位置:网站首页>Asynchronous, email and scheduled tasks
Asynchronous, email and scheduled tasks
2022-07-03 01:05:00 【Running Wang Mumu sir】
Mission
Asynchronous task
establish
servicepackage , Create a class under itAsyncServiceForgery is processing data , Cause thread delay , Analog synchronization waiting .
package com.hxl.service; import org.springframework.stereotype.Service; @Service public class AsyncService { public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(" Data processing ...."); } }establish
controllerpackage , Create a class under itAsyncControllerpackage com.hxl.controller; import com.hxl.service.AsyncService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class AsyncController { @Autowired AsyncService asyncService; @RequestMapping("/hello") public String hello(){ asyncService.hello(); return " No problem "; } }Access test
http://localhost:8080/hello, At this time, you can find the web page waiting 3 It will appear in secondsNo problemThe words... . This is the situation of synchronous waiting .In order to make the user experience better , Let the user get the message first , Then the background uses multithreading to process the results . We need to add a comment , such ,Springboot Will open a thread pool , To call .
// tell Spring This is an asynchronous method @Async public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(" Data processing ...."); }You also need to add an annotation to the main launcher , Let the asynchronous annotation turn on
@EnableAsync // Turn on the asynchronous annotation function @SpringBootApplication public class SpringbootAsyncApplication { public static void main(String[] args) { SpringApplication.run(SpringbootAsyncApplication.class, args); } }At this time, the test found , The web page will open instantly , But the background data will continue , Until the end of data processing .
Email tasks
Introduce dependencies
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>You can see the relevant email sending dependencies

see
JavaMailSenderImplAfter finding it , Look at the configuration file, that ispropertiesUnder the , We can see the relevant configurationtake QQ The service in the mailbox is turned on , We use IMAP/SMTP service

The configuration file
[email protected] spring.mail.password= Their own QQ Authorization code spring.mail.host=smtp.qq.com spring.mail.properties.mail.smtp.ssl.enable=truetest
package com.hxl; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; @SpringBootTest class SpringbootAsyncApplicationTests { @Autowired JavaMailSenderImpl mailSender; @Test void contextLoads() { // A simple email SimpleMailMessage message = new SimpleMailMessage(); message.setSubject(" Tomorrow will be a holiday "); message.setText(" direct 10 Day long vacation "); message.setTo("[email protected]"); message.setFrom("[email protected]"); mailSender.send(message); } @Test public void contextLoads2() throws MessagingException { // A complicated email MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setSubject(" Tomorrow will be a holiday "); helper.setText("<b style='color:red'> What do you think </b>",true); // Sending attachments helper.addAttachment("1.jpg",new File(" Path to file ")); helper.addAttachment("2.jpg",new File(" such as :D:\\2.jpg")); helper.setTo("[email protected]"); helper.setFrom("[email protected]"); mailSender.send(mimeMessage); } }Then you can see that our email was sent successfully .
Timing task
TaskExecutor Interface
TaskScheduler Interface
Two notes :
- @EnableScheduling // Note on timing function , In the main boot class
- @Scheduled // When to execute
test
establish
Servicepackage , Create a classScheduledServicepackage com.hxl.service; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @Service public class ScheduledService { // Execute this method at a specific time //cron expression // second branch when Japan month What day of the week // The following sentence is from Monday to Sunday , Of 0 second @Scheduled(cron = "0 * * * * 0-7") public void hello(){ System.out.println("hello, You've been executed "); } }Add... To the main program @EnableScheduling Turn on timed task function
package com.hxl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; @EnableAsync // Turn on the asynchronous annotation function @EnableScheduling // Note on timing function @SpringBootApplication public class SpringbootAsyncApplication { public static void main(String[] args) { SpringApplication.run(SpringbootAsyncApplication.class, args); } }And then it's all right
cron expression
cron:https://baike.baidu.com/item/cron/10952601?fr=aladdin
cron Generation :https://www.bejson.com/othertools/cron/
边栏推荐
猜你喜欢

【AutoSAR 十三 NVM】

Rk3568 development board evaluation (II): development environment construction

Linear programming of mathematical modeling (including Matlab code)

【AutoSAR 七 工具链简介】

飞凌搭载TI AM62x的ARM核心板/开发板首发上市,亮相Embedded World 2022

【AutoSAR 八 OS】

tail -f 、tail -F、tailf的区别

Lu Zhe, chief scientist of Shiping information: building data and personnel centered security capabilities

Data analysis, thinking, law breaking and professional knowledge -- analysis method (I)

安全运营四要素之资产、脆弱性、威胁和事件
随机推荐
ROS2之ESP32简单速度消息测试(极限频率)
世平信息首席科学家吕喆:构建以数据和人员为中心的安全能力
飞凌搭载TI AM62x的ARM核心板/开发板首发上市,亮相Embedded World 2022
数学建模之线性规划(含MATLAB代码)
excel IF公式判断两列是否相同
[AUTOSAR VI description document]
leetcode-849:到最近的人的最大距离
Explain the basic concepts and five attributes of RDD in detail
matlab查找某一行或者某一列在矩阵中的位置
瑞萨RZ/G2L ARM开发板存储读写速度与网络实测
MongoDB系列之MongoDB常用命令
[applet project development -- JD mall] user defined search component of uni app (middle) -- search suggestions
Leetcode-2115: find all the dishes that can be made from the given raw materials
Leetcode-934: the shortest Bridge
1.11 - 总线
【案例分享】让新时代教育发展与“数”俱进
比较版本号
File operation io-part2
【AutoSAR 四 BSW概述】
Thread start and priority