博客系统各模块结构介绍


placeholder image
admin 发布于:2022-05-02 21:12:03
阅读:loading

基本介绍

本篇文章将来介绍一下博客系统(当前版本)的模块间逻辑结构,功能划分等细节实现,参考如下图所示:

系统模块结构图.png

项目名称起名为chendd-blog,寓意以作者名字定义的blog系统,总共细分了11个功能模块,从拆分主体上分为两类,分别是可以用于其它项目中独立应用的公共模块和专门服务于blog项目的功能模块。所谓独立的公共模块作者的初衷是旨在构建独立的公共功能,不限制于具体某一个项目中应用,而是可以服务于多个项目中去应用,所以从模块的总体层面来讲区分为独立模块与继承parent的子功能模块。

独立模块

core

core作为核心模块的存在,从设计宗旨上来讲它仅依赖一些开源库(如Apache Commons、Google Guava、servlet-api、fastjson等,同时该模块也提供一些常见的工具类(如:DateUtil、BigDemicalUtil、IpUtil等)以及一些个人认为会被公共存在于多个项目中的功能性代码封装(如:Java Mail、Java图片处理、异常封装、统一结果集对象、公共枚举类)。

ueditor

ueditor是百度开源的一款富文本编辑器,功能全面而强大,实际应用顺手(本站1.0版本也使用这款编辑器),之所以独立构建一个模块是考虑将来会存在重复使用,而且原始版本是使用springmvc环境整合,本次使用spring boot环境整合,且改造了一些代码实现,具体会单独在文章中详细罗列。

toolkit

toolkit是以功能模块粒度的公共功能模块,目前包含有3个功能模块,分别是用户操作日志、定时任务、参数配置。用户操作日志是以用户行为动作为主导,记录用户相对应操作功能的行为以及涉及到的功能影响的数据,该功能实现较为科学与高大上,后续专门给出对应文章进行系列说明;定时任务则是使用quartz框架的实现封装,摒弃spring boot自带的quartz支持,采用更易于维护或扩展的配置实现,该模块同样会在后文中详细阐述;参数配置功能主要是将一些参数维护至数据库,通过特定的注解将参数注入至对应的component组件中,同时也支持参数的动态修改等细节实现,同样指得拥有;

third-login

third-login是第三方登录模块,整合所有的第三方登录接口实现,目前共计接入实现的有:腾讯QQ、支付宝、Gitee、百度、新浪微博、Github,在本站1.0的基础上又增加了Gitee与GitHub两种实现,同时部分第三方登录的实现支持友情站点的接入(即,多传递一个友链站点的标识,可在登录授权成功后重定向至友链站点,同时传递回用户登录的信息,包含用户ID、昵称、头像地址,本站不记录友链站点授权登录的用户数据),大家可放心授权登录。

parent模块

parent

parent表示所有具体博客功能模块的父模块,正如它的定义的含义一样,旨在聚合一些功能模块和定义一些被继承的公共扩展的配置,比如所有的功能模块都需要依赖spring boot,logback、swagger、junit等环境,表示被继承的子模块均已经被支持这些公共的依赖库,只需要更多的关注业务功能模块之间的模块依赖即可。

base

base模块在这里与parent模块高度相识,在此单独将base模块独立,主要就是为了定义一些所有子功能模块会被使用到的功能逻辑代码(与parent定义的配置相类似,这里只是提取公共代码),本项目中的base模块包含有:Api接口编号版本管理、BaseController公共类、请求包装器Filter、BaseSwagger、thymeleaf自定义标签、spring公共组件定义等。

web

web模块是所有功能的展示前端,页面采用thymeleaf实现 + Bootstrap UBold主题实现,包含多种页面布局的数据展示。

admin

admin模块是所有功能的后端实现,除了web端的接口支持外,还另有一套管理功能的管理界面,目前继承了近20个常用功能和一些主题框架级别的细节实现。

client-vo

client-vo模块则显得可有可无了,它是admin与web间的桥梁,主要是提供一些功能的DTO,供admin提供接口时定义,同时也提供web调用时的使用。

ansj

ansj是一款开源的分词实现,在多年前(博客1.0的建站时代)曾经调研过一些分词的实现库,最终经过理论了解和简单实践,最终选定了这款进程内的分词实现,系统web端的全局搜一搜就是该功能的具体实现,可访问体验。

admin-system

admin-system则是admin模块下的子功能散列分布,主要是后端管理项目中的偏系统管理类的功能,如包含菜单管理、角色管理、用户管理等。

admin-blog

admin-blog则是admin模块下的子功能散列分布,主要是后端管理中的偏博客管理类的功能,如博客文章管理、友情连接管理、留言管理等。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区