基于 Spring Boot 博客系统开发(十一)

基于 Spring Boot 博客系统开发(十一)

本系统是简易的个人博客系统开发,为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。🌿🌿🌿
基于 Spring Boot 博客系统开发(十)👈👈

定时邮件发送实现

邮件服务依赖

 <!-- mail邮件服务启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

邮件服务配置

# 邮箱邮件发送服务配置
spring.mail.host=smtp.163.com# 配置个人邮件账户和密码(密码是加密后的授权码)
spring.mail.username=xxxxxx@163.com
spring.mail.password=xxxxxx

163邮箱授权码获取:
登录163邮箱账号,进入设置开启 IMAP/SMTP服务和POP3/SMTP服务,然后点击新增授权码获取授权码。
在这里插入图片描述

邮件服务工具类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;@Component
public class MailUtils {@Autowiredprivate JavaMailSenderImpl mailSender;@Value("${spring.mail.username}")private String mailfrom;// 发送简单邮件public void sendSimpleEmail(String mailto, String title, String content) {//  定制邮件发送内容SimpleMailMessage message = new SimpleMailMessage();message.setFrom(mailfrom);message.setTo(mailto);message.setSubject(title);message.setText(content);// 发送邮件mailSender.send(message);}
}

发送邮件测试

@SpringBootTest
class BlogSystem01ApplicationTests {@Autowiredprivate MailUtils mailUtils;@Value("${spring.mail.username}")private String mailto;@Testvoid contextLoads() {StringBuffer content = new StringBuffer();content.append("博客系统总访问量为:1人次").append("\n");content.append("博客系统总评论量为:1人次").append("\n");mailUtils.sendSimpleEmail(mailto,"个人博客系统流量统计情况",content.toString());}}

定时器实现

编写定时器类

@Component
public class ScheduleTask {@Autowiredprivate MailUtils mailUtils;@Value("${spring.mail.username}")private String mailto;@Autowiredprivate StatisticMapper statisticMapper;/*** cron 一共可以有7个参数 以空格分开 其中年不是必须参数* [秒] [分] [小时] [日] [月] [周] [年],*/@Scheduled(cron = "0 0 12 1 * ?")//定时邮件发送任务,每月1日中午12点整发送邮件//@Scheduled(cron = "0 */3 * * * ? ")//定时邮件发送任务,每三分钟执行一次public void sendEmail(){long totalvisit = statisticMapper.getTotalVisit();long totalComment = statisticMapper.getTotalComment();StringBuffer content = new StringBuffer();content.append("博客系统总访问量为:"+totalvisit+"人次").append("\n");content.append("博客系统总评论量为:"+totalComment+"人次").append("\n");mailUtils.sendSimpleEmail(mailto,"个人博客系统流量统计情况",content.toString());}
}

应用入口函数添加配置注解

@EnableScheduling
@SpringBootApplication
public class BlogSystem01Application {public static void main(String[] args) {SpringApplication.run(BlogSystem01Application.class, args);}}

其中cron表达式格式:
{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
*:表示所有值 比如用在日 表示每一天。
?:表示不指定值 比如周配置 表示不指定星期几执行。
/:表示递增触发 比如 用在分 5/20 从第五分钟开始 每增加20分钟执行一次。
-:表示区间 比如用在 1-6 表示一月到六月执行。

统计博客文章总访问量/总评论量,使用注解自定义SQL,StatisticMapper.java

@Mapper
public interface StatisticMapper extends BaseMapper<Statistic> {// 统计博客文章总访问量@Select("SELECT SUM(hits) FROM t_statistic")public long getTotalVisit();// 统计博客文章总评论量@Select("SELECT SUM(comments_num) FROM t_statistic")public long getTotalComment();}

实现效果,每月1日中午12点整定时发送邮件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云上聚智——移动云云服务器进行后端的搭建及部署

什么是移动云 移动云是指将移动设备和云计算技术相结合&#xff0c;为移动应用提供强大的计算和存储能力的服务模式。传统的移动应用通常在本地设备上进行计算和存储&#xff0c;而移动云将这些任务转移到云端进行处理。通过移动云&#xff0c;移动设备可以利用云端的高性能计算…

基于Python+flask+echarts的气象数据采集与分析系统,可实现lstm算法进行预测

背景 基于PythonFlaskEcharts的气象数据采集与分析系统结合了强大的数据处理能力和可视化展示技术&#xff0c;旨在实现对气象数据的实时采集、存储和分析。通过Python编程语言实现数据采集模块&#xff0c;利用Flask框架搭建后端系统&#xff0c;实现数据处理、存储和分析功能…

ORB-SLAM2从理论到代码实现(六):Tracking程序详解(上)

1. Tracking框架 Tracking线程流程框图&#xff1a; 各流程对应的主要函数 2. Tracking整体流程图 上面这张图把Tracking.cc讲的特别明白。 tracking线程在获取图像数据后&#xff0c;会传给函数GrabImageStereo、GrabImageRGBD或GrabImageMonocular进行预处理&#xff0c;这…

【php开发系统性学习】——thinkphp框架的控制器和视图的精简详细的使用

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

[Android]联系人-删除修改

界面显示 添加按钮点击&#xff0c;holder.imgDelete.setlog();具体代码 public MyViewHolder onCreateViewHolder(NonNull ViewGroup parent, int viewType) {//映射布局文件&#xff0c;生成相应的组件View v LayoutInflater.from(parent.getContext()).inflate(R.layout.d…

胶原蛋白三肽能否深入皮肤?一场关于美丽的科学之旅

在追求美丽的道路上&#xff0c;我们总是对各种护肤成分充满好奇。今天&#xff0c;就让我们一起探讨一个热门话题——胶原蛋白三肽&#xff0c;它究竟能否深入我们的皮肤&#xff0c;为我们带来期待中的美丽改变呢&#xff1f; 首先&#xff0c;我们需要了解胶原蛋白肽是什么…

开发心电疾病分类的深度学习模型并部署运行于ARM虚拟硬件平台(AVH)

目录 一、ARM虚拟硬件平台介绍 二、心电疾病分类模型介绍 三、部署流程 3.1 基于百度云平台订阅虚拟硬件镜像 3.2 安装编译相关组件 3.1 数据加载 3.2 模型转换 方式一&#xff1a; tensorflow模型转换为onnx模型&#xff0c;onnx模型转换为TVM模型 方式二&#xff1…

注册表Windows兼容性设置(AppCompatFlags)

属性 - 兼容性 EXE文件属性中有兼容性标签&#xff0c;当有些老版本软件不能正常运行时经常会调整这里的设置。 image.png 上面的所有选项都写在注册表中&#xff0c;其中“更改所有用户的设置”保存在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppC…

html5各行各业官网模板源码下载(2)

文章目录 1.来源2.源码模板2.1 HTML5好看的旅行网站模板源码2.2 HTML5自适应医院叫号大屏模板源码2.3 HTML5好看的高科技登录页面模板源码2.4 HTML5宠物美容服务公司网站模板源码2.5 HTML5创意品牌广告设计公司网站模板源码2.6 HTML5实现室内设计模板源码2.7 HTML5黄金首饰网站…

Activiti7_使用

Activiti7_使用 一、Activiti7二、绘制工作流三、通过代码部署流程&#xff0c;再对流程进行实例化&#xff0c;完整运行一遍流程即可四、在springbooot中使用 一、Activiti7 为了实现后端的咨询流转功能&#xff0c;学习Activiti7&#xff0c;记录下使用的过程及遇到的问题 二…

openwrt 官方版 安装配置 AdGuard Home + smartdns 告别广告烦扰 教程 软路由实测 系列五

1 安装 adguard home opkg update opkg install adguardhome #启动 /etc/init.d/adguardhome start /etc/init.d/adguardhome enable #查看 rootOpenWrt:~# ps| grep AdGuardHome5101 root 1233m S /usr/bin/AdGuardHome -c /etc/adguardhome.yaml -w /var/adguardhom…

云界洞见——基于移动云云数据库MySQL应用实践

目录 简介1 新手入门1.1 创建MySQL实例1.2 公网连接MySQL实例 2 操作指南2.1 创建数据库2.2 数据备份设置2.3 日志管理2.4 监控告警2.5 代码审计 3 应用场景4 总结 如今&#xff0c;大型企业如金融企业和银行等&#xff0c;在下一代的微服务架构转型要求下&#xff0c;需要基础…

渗透测试的测试流程与注意事项

软件测试流程 渗透测试是一种重要的软件测试技术&#xff0c;通过对系统进行模拟攻击和漏洞评估&#xff0c;帮助组织发现和修复潜在的安全风险&#xff0c;提高系统的安全性和稳定性。在进行渗透测试时&#xff0c;需要注意合法授权、技术能力、安全意识和报告质量等方面的问…

科学提效|AI融入零售业,未来零售的创新之旅

零售业正经历着由人工智能&#xff08;AI&#xff09;引领的转型浪潮。AI在零售和消费品&#xff08;CPG&#xff09;行业的应用前景广阔&#xff0c;它正以多种创新方式重塑行业的运作模式。且随着技术的不断进步&#xff0c;AI在零售业的应用将变得更加广泛和深入。AI不仅能够…

即刻起飞——基于Amazon Bedrock快速构建生成式AI应用

即刻起飞 —— 基于 Amazon Bedrock 快速构建生成式 AI 应用 1. 前言 在百模大战中&#xff0c;AI行业的发展正在经历前所未有的变革。这场竞争不仅推动了AI技术的快速发展&#xff0c;也揭示了AI行业的新趋势。这些趋势不仅影响着我们如何看待和使用AI&#xff0c;也预示着AI…

免费且非常火的日程管理软件:飞项

一、简介 1、在日常繁忙的工签中&#xff0c;是否事情一大堆却记不住&#xff1f;系统自带的日历用着却是不方便&#xff0c;不顺手&#xff0c;提醒不及时&#xff1f;待办、打卡、记事乱七八糟的混在一起&#xff0c;关键时候找不到&#xff1f;市面上的日程管理软件那么多&a…

springboot+jwt+shiro+vue+elementUI+axios+redis+mysql完成一个前后端分离的博客项目

目录 简易博客项目(springbootjwtshirovueelementUIaxiosredismysql)第一章 整合新建springboot,整合mybatisplus第一步 创建项目(第八步骤就行)数据库:1、 修改pom.xml2、修改配置文件3、创建数据库vueblog然后执行下面命令生成表 第二步 配置分页MybatisPlusConfig生成代码(d…

Spring Boot 系统学习第三天:Spring依赖注入原理分析

1.概述 Spring中关于依赖注入的代码实现非常丰富&#xff0c;涉及大量类和组件之间的协作与交互。从原理上讲&#xff0c;任何一个框架都存在一条核心执行流程&#xff0c;只要抓住这条主流程&#xff0c;就能把握框架的整体代码结构&#xff0c;Spring也不例外。无论采用何种依…

YoloV8改进策略:注意力改进|HCANet全局与局部的注意力模块CAFM|二次创新|即插即用

文章目录 摘要用在自己的论文中,该如何描述原论文中的描述在自己论文中描述代码与详解官方结果改进方法测试结果总结摘要 在CAFM模型的基础上进行二次创新,我成功地开发了一个性能显著提升的改进版模型。这一创新不仅优化了特征提取和融合的方式,还极大地提高了模型的泛化能…