74:第六章:开发文章服务:7:定时发布文章;(使用到了Spring的定时任务;)(这儿的方案,需要定期全局扫描article表,这效率是很低的,后面会使用MQ来做优化;)

您所在的位置:网站首页 今日头条文章发布后修改的文章显示时间 74:第六章:开发文章服务:7:定时发布文章;(使用到了Spring的定时任务;)(这儿的方案,需要定期全局扫描article表,这效率是很低的,后面会使用MQ来做优化;)

74:第六章:开发文章服务:7:定时发布文章;(使用到了Spring的定时任务;)(这儿的方案,需要定期全局扫描article表,这效率是很低的,后面会使用MQ来做优化;)

2024-07-12 03:59| 来源: 网络整理| 查看: 265

说明:

(1)本篇博客内容:开发定时发布文章的逻辑;

目录

一:发表文章时,可以定时发布;

二:定时任务技术,简介;

三:本项目,定时发布的处理逻辑;

四:编写定时发布任务,所需的Service层和Dao层逻辑;

1.1 在【article】文章服务中,创建ArticleMapperCustom这个mapper接口:定义了一个修改文章发布状态的方法;

1.2 在【article】文章服务中,创建ArticleMapperCustom.xml:去编写修改文章发布状态的方法的SQL实现;

2.1 在【article】文章服务中的ArticleService接口中:定义了一个修改文章发布状态的方法;

2.2 在【article】文章服务中的ArticleServiceImpl实现类中:去实现修改文章发布状态的方法;

五:使用Spring的定时任务技术,去实现定时发布文章;(重点)

六:效果;

七:本篇博客需要改正的一个点:每隔3秒就要全局扫描一遍article表,效率是很低的;(后面会通过MQ来做优化)

一:发表文章时,可以定时发布;

二:定时任务技术,简介;

(1)在【SSM开发书评网27:Spring-Task定时任务,来实现【更新评分、评价人数】的功能;(其中,包括Cron表达式,@Scheduled任务调度注解)】中,我们第一次介绍了Spring的定时任务;务必去参考一下;

(2.1)Cron表达式生成器:【在线Cron表达式生成器】,通过这个在线工具,可以帮我们生成Cron表达式;

(2.2)然后,Spring提供的@Scheduled()中,是不支持年的;所以,我们使用这个Cron表达式生成器生成Cron表达式后,记得要去除最后一位年;

三:本项目,定时发布的处理逻辑;

即其逻辑是:

           ● 我们定时发布文章时,和正常发布文章一样;文章图片会上传到阿里OSS,文章内容也会写到article表中;

           ● 只是,该文章在article中的那条记录中;is_apponit文章发布状态会是1(定时发布),publish_time文章预发布时间会是我们设置的时间;

           ● 因为文章的is_apponit文章发布状态是1,所以在前台显示所有文章的地方,这篇文章不会被查出来;

           ● 当到了定时发布的时间时,我们就去修改is_apponit为0(即时发布);这样一来,在前台显示所有文章的地方,这篇文章就会被查出来,也就相当于这篇文章发布了;(感觉,CSDN这儿的处理逻辑,也差不多是这样的)

四:编写定时发布任务,所需的Service层和Dao层逻辑; 1.1 在【article】文章服务中,创建ArticleMapperCustom这个mapper接口:定义了一个修改文章发布状态的方法;

package com.imooc.article.mapper; import com.imooc.my.mapper.MyMapper; import com.imooc.pojo.Article; import org.springframework.stereotype.Repository; @Repository public interface ArticleMapperCustom extends MyMapper { /** * 方法:修改所有的、publish_time小于等于当前时间的、is_appoint=1的, * 记录的is_appoint字段值为0; */ public void updateAppointToPublish(); }

 

1.2 在【article】文章服务中,创建ArticleMapperCustom.xml:去编写修改文章发布状态的方法的SQL实现;

update article set is_appoint=0 where publish_time;=NOW() and is_appoint=1

(1)这个SQL很容易理解,就是扫描整张article表;把所有的、publish_time小于等于当前时间的、is_appoint=1的,记录的is_appoint字段值为0;

(2)xml中是不识别的



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3