任务
异步任务
Java异步指的是在程序执行过程中,某些任务可以在后台进行,而不会阻塞程序的执行。通常情况下,Java异步使用线程池来实现,将任务放入线程池中,等待线程池中的线程执行这些任务。Java异步可以提高程序的性能和并发能力,尤其是在处理IO密集型任务时,可以大大减少等待时间,提高程序的响应速度。常见的Java异步实现方式包括Future、CompletableFuture、RxJava等
- service/AsyncService.java
package com.wei.service; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; /** * @ClassName AsyncService * @Description TODO * @Author wei_shuo * @Date 2023/5/9 18:30 * @Version 1.0 */ @Service public class AsyncService { //告诉Spring这是异步方法 @Async public void hello(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("数据正在处理……"); } }
- controller/AsyncController.java
package com.wei.controller; import com.wei.service.AsyncService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @ClassName AsyncController * @Description TODO * @Author wei_shuo * @Date 2023/5/9 18:33 * @Version 1.0 */ @RestController public class AsyncController { @Autowired AsyncService asyncService; @RequestMapping("/hello") public String hello(){ asyncService.hello(); return "OK"; } }
- SpringbootTestApplication启动类配置注解
package com.wei; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication //开启异步注解功能 @EnableAsync public class SpringbootTestApplication { public static void main(String[] args) { SpringApplication.run(SpringbootTestApplication.class, args); } }
邮件任务
- 导入依赖
<!--javax.mail--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
- application.properties
spring.mail.username=1096075493@qq.com spring.mail.password=cjkglgqynqwabaed spring.mail.host=smtp.qq.com #开启加密验证 spring.mail.properties.mail.smtp.ssl.enable=true
- Test测试
package com.wei; 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 SpringbootTestApplicationTests { @Autowired(required=false) JavaMailSenderImpl javaMailSender; //简单邮件 @Test void contextLoads() { SimpleMailMessage mailMessage = new SimpleMailMessage(); //主题 mailMessage.setSubject("wei_shuo"); //内容 mailMessage.setText("Hello,World!"); mailMessage.setFrom("1096075493@qq.com"); mailMessage.setTo("1096075493@qq.com"); javaMailSender.send(mailMessage); } //复杂邮件 @Test void contextLoads2() throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //组装 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true); helper.setSubject("wei_shuo-plus"); helper.setText("<p style='color:red'>Hello,World-Plus</p>",true); //附件 helper.addAttachment("1.jpg",new File("C:\\Users\\ws199\\Desktop")); helper.setFrom("1096075493@qq.com"); helper.setTo("1096075493@qq.com"); javaMailSender.send(mimeMessage); } /** * * @param html * @param subject * @param text * @throws MessagingException */ //封装方法 public void sendMail(Boolean html,String subject,String text) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //组装 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,html); helper.setSubject(subject); helper.setText(text,true); //附件 helper.addAttachment("1.jpg",new File("C:\\Users\\ws199\\Desktop")); helper.setFrom("1096075493@qq.com"); helper.setTo("1096075493@qq.com"); javaMailSender.send(mimeMessage); } }
定时任务
- SpringbootTestApplication.java
package com.wei; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication //开启异步注解功能 @EnableAsync //开启定时功能的注解 @EnableScheduling public class SpringbootTestApplication { public static void main(String[] args) { SpringApplication.run(SpringbootTestApplication.class, args); } }
- ScheduledService.java
package com.wei.service; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; /** * @ClassName ScheduledService * @Description TODO * @Author wei_shuo * @Date 2023/5/10 18:23 * @Version 1.0 */ @Service public class ScheduledService { //固定时间,执行代码 @Scheduled(cron = "0/2 * * * * *") public void hello(){ System.out.println("Hello,你被执行了……"); } }
🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——
点赞
👍收藏
⭐️评论
📝