首页 > 技术文章 > 个人博客项目总结

Water2Wine 2020-08-20 11:39 原文

1. 框架搭建

集成环境
•application.yml:公共配置和表明当前配置文件
•application-dev.yml:开发环境配置文件
•application-pro.yml:部署环境配置文件
主要包括spring的配置,mybatis的配置,还有log的配置

异常处理
定义错误页面
可以在前端页面templates目录下有error文件夹,SpringBoot可以通过文件夹的名称和错误文件命名的方式找到异常页面,所以文件名称只能固定,有以下异常页面:
•404.html
•500.html
•error.html
自定义异常处理:使用拦截器进行拦截
@ControllerAdvice注解,表示拦截掉所有带有@Controller注解的控制器
@ExceptionHandler注解,表明是异常处理方法

日志处理
采用SpringBoot中的AOP进行日志处理,AOP可以以切面的形式拦截,将日志内容记录下来,这里记录以下日志信息:
•访问的URL
•访问者的IP
•访问时调用的方法
•访问时传递的参数
•访问时返回的内容
@Aspect注解,AOP切面作用
@Component注解,开启组件扫描,通过注解找到要扫描的对象
@Pointcut(execution())注解,通过execution来表示需要拦截的类,申明log()是一个切面

2. 后台登录

集成shiro框架进行权限管理
shiro架构:

subject:主体,外部应用于subject进行交互
SecurityManager:安全管理器,对全部的subject进行安全管理;通过authenticator进行认证,通过authorizer进行授权,通过sessionmanager进行会话管理
Authenticator:认证器,对用户身份进行认证
Authorizer:授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限
realm:领域,相当于datasource数据源,securitymanager进行安全认证是需要通过realm获取用户权限数据
sessionManager:会话管理
sessionDAO:会话dao,是对session会话操作的一套接口
cachemanager:缓存管理,将用户权限数据存储在缓存,这样可以提高性能
cryptography:密码管理,负责加密/解密

认证流程

授权流程

3. 实体类构建

博客实体类:包括博客正文,评论次数,浏览次数等,还有分类,用户,评论集合等,用来实现多表查询和相关功能;需要注意的是博客正文在数据库表中的类型要手动改为longtext类型
分类实体类:与博客是一对多的关系
标签实体类:与博客是多对多的关系
评论实体类:父评论子评论

4. 高并发问题解决方案

关于点赞的高并发问题,关于阅读量,评论数频繁更新的问题

使用redis消息队列的解决方案

将阅读量,点赞数,评论数都放入缓存中,同时通过消息队列进行发布和订阅消息,定时消费消息将缓存中的数据进行改动,然后异步持久化到mysql中

推荐阅读