当前位置: 首页 > news >正文

苏州公司网站建设方案菏泽做网站建设找哪家好

苏州公司网站建设方案,菏泽做网站建设找哪家好,源代码查看WordPress文件,可以做网络攻防的实验的网站文章目录前言一、异步方法调用1、导入依赖2、创建异步执行任务线程池3、创建业务层接口和实现类4、创建业务层接口和实现类二、测试定时任务1.导入依赖2.编写测试类#xff0c;开启扫描定时任务3.测试三、实现定时发送邮件案例1.邮箱开启IMAP服务2.导入依赖3.导入EmailUtil4.编… 文章目录前言一、异步方法调用1、导入依赖2、创建异步执行任务线程池3、创建业务层接口和实现类4、创建业务层接口和实现类二、测试定时任务1.导入依赖2.编写测试类开启扫描定时任务3.测试三、实现定时发送邮件案例1.邮箱开启IMAP服务2.导入依赖3.导入EmailUtil4.编写邮件发送方法5.开启异步和定时任务总结前言 Quartz是一个完全由java编写的开源作业调度框架、它的简单易用受到业内人士的一致好评。本篇记录怎么用SpringBoot使用Quartz 一、异步方法调用 由于多个任务同时执行时默认为单线程所以我们用异步方法调用使其成为多线程执行 看一个案例 1、导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency2、创建异步执行任务线程池 这里我们使用springboot自带的线程池 package com.lzl.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.AsyncConfigurer; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor;Configuration public class AsyncExcutorPoolConfig implements AsyncConfigurer {Bean(asyncExecutor)Overridepublic Executor getAsyncExecutor() {//Spring自带的线程池最常用ThreadPoolTaskExecutor taskExecutor new ThreadPoolTaskExecutor();//线程IO密集型 和 CPU密集型//线程设置参数taskExecutor.setCorePoolSize(8);//核心线程数根据电脑的核数taskExecutor.setMaxPoolSize(16);//最大线程数一般为核心线程数的2倍taskExecutor.setWaitForTasksToCompleteOnShutdown(true);//任务执行完成后关闭return taskExecutor;} }注意注解不要少 3、创建业务层接口和实现类 package com.lzl.Service;/*** --效率是成功的核心关键--** Author lzl* Date 2023/3/7 09:42*/public interface AsyncService {void testAsync1();void testAsync2(); } package com.lzl.Service.impl;import com.lzl.Service.AsyncService; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;/*** --效率是成功的核心关键--** Author lzl* Date 2023/3/7 09:43*/ Service public class AsyncImpl implements AsyncService {AsyncOverridepublic void testAsync1() {try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(精准是唯一重要的标准);}Async(asyncExecutor)//开启异步执行Overridepublic void testAsync2() {try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(效率是成功的核心关键);} } 4、创建业务层接口和实现类 package com.lzl.task;import com.lzl.Service.AsyncService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** --效率是成功的核心关键--** Author lzl* Date 2023/3/7 09:40*/ RestController RequestMapping(/login) public class LoginController {Autowiredprivate AsyncService service;RequestMapping(/Async1)public String testAsync1(){service.testAsync1();return 牛逼;}RequestMapping(/Async2)public String testAsync2(){service.testAsync2();return 不牛逼;} } 在启动类开启异步 整体目录结构如下 测试 运行项目访问controller 访问controller时页面直接出现返回值控制台过了两秒打印文字证明异步执行成功 二、测试定时任务 1.导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency2.编写测试类开启扫描定时任务 package com.lzl.task;import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled;import java.util.Date;/*** --效率是成功的核心关键--** Author lzl* Date 2023/3/7 10:42*/ //任务类 Configuration public class Tasks {AsyncScheduled(cron */2 * * * * ?)public void task1(){System.out.println(效率new Date().toLocaleString());}AsyncScheduled(cron */1 * * * * ?)public void task2(){System.out.println(精准new Date().toLocaleString());} } 3.测试 三、实现定时发送邮件案例 这里以QQ邮箱为例这个功能类似于通过邮箱找回密码类似需要我们进行授权码操作 1.邮箱开启IMAP服务 登陆QQ邮箱找到帐户下拉 看到如下图 我这里已经开启了按照步骤操作会有一个授权码保存好下边步骤要用此处不再演示 2.导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 邮箱 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency3.导入EmailUtil package com.lzl.utils;import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; import java.util.Random; /*** --效率是成功的核心关键--** Author lzl* Date 2023/3/7 11:44*/public class EmailUtil {private static final String USER qq.com; // 发件人邮箱地址private static final String PASSWORD ; // qq邮箱的客户端授权码需要发短信获取/*** param to 收件人邮箱地址* param text 邮件正文* param title 标题*//* 发送验证信息的邮件 */public static boolean sendMail(String to, String text, String title) {try {final Properties props new Properties();props.put(mail.smtp.auth, true);props.put(mail.smtp.host, smtp.qq.com);// 发件人的账号props.put(mail.user, USER);//发件人的密码props.put(mail.password, PASSWORD);// 构建授权信息用于进行SMTP进行身份验证Authenticator authenticator new Authenticator() {Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 用户名、密码String userName props.getProperty(mail.user);String password props.getProperty(mail.password);return new PasswordAuthentication(userName, password);}};// 使用环境属性和授权信息创建邮件会话Session mailSession Session.getInstance(props, authenticator);// 创建邮件消息MimeMessage message new MimeMessage(mailSession);// 设置发件人String username props.getProperty(mail.user);InternetAddress form new InternetAddress(username);message.setFrom(form);// 设置收件人InternetAddress toAddress new InternetAddress(to);message.setRecipient(Message.RecipientType.TO, toAddress);// 设置邮件标题message.setSubject(title);// 设置邮件的内容体message.setContent(text, text/html;charsetUTF-8);// 发送邮件Transport.send(message);return true;} catch (Exception e) {e.printStackTrace();}return false;}//随机生成num个数字验证码public static String getValidateCode(int num) {Random random new Random();String validateCode ;for (int i 0; i num; i) {//0 - 9 之间 随机生成 num 次int result random.nextInt(10);validateCode result;}return validateCode;}//测试public static void main(String[] args) throws Exception {//给指定邮箱发送邮件EmailUtil.sendMail(729953102qq.com, 你好这是一封测试邮件无需回复。, 测试邮件随机生成的验证码是 getValidateCode(6));System.out.println(发送成功);} } 4.编写邮件发送方法 package com.lzl.task;import com.lzl.utils.EmailUtil; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Scheduled;/*** --效率是成功的核心关键--** Author lzl* Date 2023/3/7 11:45*/ Configuration public class TaskEmail {//指定时间进行发送邮件Scheduled(cron 10 49 11 * * ?)public void sendMail(){EmailUtil.sendMail(自己的邮箱qq.com, 效率是成功的核心关键, 测试邮件随机生成的验证码是 EmailUtil.getValidateCode(6));} } 5.开启异步和定时任务 package com.lzl;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 QuartzStudyApplication {public static void main(String[] args) {SpringApplication.run(QuartzStudyApplication.class, args);}} 测试 此处不再演示 总结 定时任务在很多业务场景中经常会用到好记性不如烂笔头本篇只是简单的记录一下
http://www.w-s-a.com/news/396414/

相关文章:

  • 杭州建设工程网seo服务是什么
  • 兼职做问卷调查的网站wordpress mysql设置
  • 怎么在百度上能搜到自己的网站山西seo谷歌关键词优化工具
  • 网站搭建免费模板飞鱼crm下载
  • 网站开发竞品分析app制作公司深圳
  • 网站建设ssc源码修复设计班级网站建设
  • 网站重定向凡科做网站不要钱
  • 佛山html5网站建设微信营销软件破解版
  • 网站单页做301南京百度推广
  • 私人做网站要多少钱展芒设计网页
  • 怎样网站制作设计如何在网上推广农产品
  • 做关键词排名卖网站聚名网
  • 吉林省住房城乡建设厅网站首页体育器材网站建设方案
  • 网站建设及维护专业手机金融界网站
  • 常州网站建设工作室建立网站有怎么用途
  • 如何盗取网站推广策划书模板
  • 游戏网站建设计划书网络开发需要学什么
  • 手机网站维护费网站开发包括网站过程
  • 懂做游戏钓鱼网站的网站建设技术的发展
  • 网站被百度收录百度一下你就知道 官网
  • 雅客网站建设做网站用什么做
  • 做宣传海报网站专业网站设计速寻亿企邦
  • 秦皇岛市住房和城乡建设局网站有关网站开发的参考文献
  • 晋城城乡建设局网站深圳外贸业务员工资
  • 招聘网站开发的公司销售运营主要做什么
  • 徐州网站无障碍建设wordpress证书
  • c语言可以做网站吗请人做网站收费多少
  • 中英双语网站怎么做网站为什么做静态
  • 毕业设计做音乐网站可以吗网站运营方案
  • windos 下做网站工具网站右侧返回顶部