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

怎么用手机建设网站品牌运营中心

怎么用手机建设网站,品牌运营中心,平台搭建与拆除流程,天津建设信息网文章目录前言一、异步方法调用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/89918/

相关文章:

  • wordpress站点更换域名自己做wordpress 模版
  • 怎么做虚拟的网站东莞常平邮编是多少
  • 电子商务网站和普通网站的区别正规网站建设多少费用
  • 郴州免费招聘网站前端好还是后端好
  • 织梦网站怎样做子域名20个中国风网站设计欣赏
  • wordpress网站搬简约创意logo图片大全
  • 叙述网站制作的流程石家庄58同城最新招聘信息
  • 南昌微信网站建设东莞网站优化软件
  • 爱站数据官网纯静态网站挂马
  • 网站建设公司未来方向3d设计网站
  • 建设部网站 干部学院 一级注册建筑师培训 2014年做网站开发的提成多少钱
  • 网上请人做软件的网站铝合金型材外发加工网
  • 手机网站建设万网山东省作风建设网站
  • 网站策划专员招聘50万县城做地方网站
  • 网站开发公司+重庆wordpress自定义搜索界面
  • 梅州南站学校官网
  • 网站变灰代码 所有浏览器企业邮箱域名怎么填写
  • 网站建设哪好旅行社网站模板
  • 网站开发发展存在的问题交换链接营销的经典案例
  • 烟台高端网站建设公司福田市网站建设推广
  • 做网站如何保证询盘数量智慧城市
  • 大连网站平台研发wordpress更改地址
  • 做标书要不要做网站南昌网站排名优化费用
  • 网站内容如何自动关联新浪微博万网域名信息
  • 网站出售网络推广服务费计入什么科目
  • 宁波咨询网站设计西安网站制作开发
  • 深圳市专注网站建设全网营销网络推广
  • 如何快速建设网站虚拟空间软件
  • 一个虚拟主机可以做几个网站免费软件下载中心
  • 美工培训网站中国建筑网官网手机版