资讯详情

基于SpringBoot 适合学习的开源社区平台

今天TJ君想和大家分享的是一个集各种技术于一体的开源社区平台,

平台使用的主要技术有:SpringBoot MyBatis MySQL Redis Kafka Elasticsearch Spring Security,帖子、评论、私信、系统通知、喜欢、关注、搜索、用户设置、数据统计等模块都可以支持实现。

技术栈主要用于前后端:

  • 前端

    • Thymeleaf

    • Bootstrap 4.x

    • Jquery

    • Ajax

  • 后端

    • Spring

    • Spring Boot 2.1.5 RELEASE

    • Spring MVC

    • ORM:MyBatis

    • 数据库:MySQL 5.7

    • 分布式缓存:Redis

    • 本地缓存:Caffeine

    • 消息队列:Kafka 2.13-2.7.0

    • 搜索引擎:Elasticsearch 6.4.3

    • 安全:Spring Security

    • 邮件任务:Spring Mail

    • 分布式定时任务:Spring Quartz

    • 日志:SLF4J(日志接口) Logback(日志实现)

如下图所示:

TJ如果你想进一步详细描述平台细描述平台实现的功能,那就是:

  • 注册

  • 登录 | 登出

    • 动态生成验证码

    • 记住我

  • 账号设置

    • 修改头像

    • 修改密码

  • 过滤敏感词

    • 前缀树

  • 帖子模块

    • 发布帖子(过滤敏感词)

    • 所有帖子都显示在分页上

      • 支持按照 发帖时间 显示

      • 支持按照 热排 显示(Spring Quartz)

    • 查看帖子的细节

    • 权限管理(Spring Security Thymeleaf Security)

      • 未登录用户无法发帖

      • “版主” 可以看到帖子的顶部和精细按钮,并执行相应的操作

      • “管理员” 您可以看到帖子的删除按钮并执行相应的操作

      • 普通用户 不能看到帖子的顶部、精细、删除按钮,也不能执行相应的操作

  • 评论模块

    • 对帖子发表评论(过滤敏感词)

    • 评论显示在分页上

    • 回复评论(过滤敏感词)

    • 权限管理(Spring Security)

      • 未登录用户不能使用评论功能

  • 私信模块

    • 发送私信(过滤敏感词)

    • 私信列表

      • 查询当前用户的会话列表

      • 每次会话只显示最新的私信

      • 支持分页显示

    • 私信详情

      • 查询会话中包含的所有私信

      • 访问私信详情时,将显示的私信设置为已读状态

      • 支持分页显示

    • 权限管理(Spring Security)

  • 统一处理 404 / 500 异常

    • 普通请求异常

    • 异步请求异常

  • 统一记录日志

  • 点赞模块

    • 支持对帖子的评论/回复

    • 第 1 次点赞,第 2 次取消点赞

    • 首页统计帖子点赞数量

    • 详情页统计帖子和评论/回复的赞数

    • 详情页息页面显示当前登录用户的拇指状态(赞扬表示赞扬)

    • 统计我的赞数

    • 权限管理(Spring Security)

      • 未登录的用户不能使用拇相关功能

  • 关注模块

    • 关注功能

    • 注意功能取消

    • 统计用户关注和粉丝数量

    • 我的关注列表(查询用户关注的人)支持分页

    • 我的粉丝列表(查询某个用户的粉丝),支持分页

    • 权限管理(Spring Security)

      • 未登录用户不能使用关注相关功能

  • 系统通知模块

    • 通知列表

      • 通知显示评论、表扬和关注三种类型

    • 通知详情

      • 分页显示某一主题中包含的通知

      • 进入某一类型的系统通知细节,将页面上所有未读系统的通知状态设置为已读系统

    • 未读数量

      • 显示各类系统通知的未读数

      • 显示所有系统通知的未读数

    • 导航栏显示所有消息的未读数量(未读私信) 未读系统通知)

    • 权限管理(Spring Security)

      • 未登录用户无法使用系统通知功能

  • 搜索模块

  • 网站数据统计(管理员专属)

    • 独立访客 UV

      • 支持单日查询和间隔日查询

    • 日活跃用户 DAU

      • 支持单日查询和间隔日查询

    • 权限管理(Spring Security)

      • 只有管理员才能查看网站数据统计

  • 优化网站性能

    • 在处理每个请求时,用户信息应根据登录凭证通过拦截器查询,访问频率非常高。因此,缓存成功登录的用户信息 Redis 保存一段时间,查询用户信息时优先从缓存中取值;如果缓存中没有用户信息,则将其存储在缓存中;用户信息变更时删除相应的缓存数据;

    • 引入本地缓存 Caffeine,缓存热帖表和帖子的总数,避免缓存雪崩(这里面还能再加一层二级缓存 Redis)。

本地部署

先确保一下环境都已安装 Java 8、 MySQL 5.7、 Redis、 Kafka 2.13-2.7.0、 Elasticsearch 6.4.3

然后修改本地配置文件信息:

  • application-develop.properties:

    • MySQL

    • Spring Mail(邮箱需要开启 SMTP 服务)

    • Kafka:consumer.group-id(该字段见 Kafka 安装包中的 consumer.proerties,可自行修改, 修改完毕后需要重启 Kafka)

    • Elasticsearch:cluster-name(该字段见 Elasticsearch 安装包中的 elasticsearch.yml,可自行修改)

    • 七牛云(需要新建一个七牛云的对象存储空间,用来存放上传的头像图片)

  • logback-spring-develop.xml:

    • LOG_PATH:日志存放的位置

需要注意的是,每次运行需要打开如下软件:

  • MySQL

  • Redis

  • Elasticsearch

  • Kafka

另外,还需要建好数据库 greatecommunity,然后依次运行项目 sql 文件夹下的这几个 sql 文件建立数据库表:

同时针对每一个功能模块,平台作者还提供了自己的思维导图,方便用户理解:

例如注册功能

登录登出功能

几乎每个功能都有,也方便小伙伴们进行理解和学习。

最后看下实际的运行效果:

预祝大家学习愉快~~~项目地址如下:

https://github.com/Veal98/Echo

TJ君将之前发过的各种项目及工具进行了整理,收录到了GitHub项目,欢迎各位小伙伴光临Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU

标签: y27a2024tj圆形连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台