基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统。
项目预览地址:MyBlog
前言
学习Java也有一段时间,期间更多的是理论的学习和一些Demo代码编写,知识还比较分散、浅薄,所以做了这么一个实战项目,把已学的知识应用到实践中,通过从零实现一个完整项目,建立一个Java Web应用开发的基本认知,同时也能更加深入的理解各个技术的细节。除此之外,也是为了锻炼自己的编码能力和遇到问题的解决能力。
这是笔者在学习Java Web过程中写的第一个较为完整的练手项目,在各方面可能都还很稚嫩,欢迎大家多多指教。如果本项目对您有帮助,点个赞鼓励一下就是对我的最好支持,谢谢。
项目简介
MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,后台和前台均通过JSON数据做交互,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理、友链管理、个人资料/博客信息管理等。
使用到的一些规范或实现:
- 统一请求响应
- 统一异常处理
- Java Bean Validation参数校验
- 面向AOP编程:通过自定义注解实现接口限流、操作日志记录等
- ……
技术栈
开发环境
- 工具:IntelliJ IDEA
- JDK 1.8
- 数据库:MySQL 8.0.15
- 项目构建:后端Maven、前端 Webpack
后端
- Web框架:Spring Boot
- 安全框架:Spring Security
- 字段校验:Spring Validation
- 持久层:MyBatis-Plus
- 接口文档:Swagger2
- Lombok:请确保您的 IDE 安装了此插件
- 使用简单的自定义缓存,可更换成 Redis
- 其他:Thumbnailator、wordfilter、等等
前端
- Vue.js2 全家桶
- Element-UI
- vue-admin-template 后台模板
- axios
- echarts
- mavon-editor
- 等等
项目结构
.|--src.main.java
|---xyz.snwjas.blog //源码
|---annotation //注解
|---aspect //aop切入点
|---config //配置
|---constant //常量
|---controller //控制器
| |---admin //后台控制器
| |---app //前台控制器
|---exception //自定义异常
|---handler //处理器
|---interceptor //拦截器
|---mapper //MyBatis mapper接口
| |---xml //MyBatis mapper xml 文件
|---model //模型
| |---base //基本接口/类
| |---entity //实体类
| |---enums //枚举常量
| |---params //查询参数
| |---vo //视图对象
|---schedule //定时任务
|---service //业务接口
| |---impl //业务接口实现类
|---support //其他的一些支持类
| |---cache //自定义缓存
| |---security //Spring Security 认证逻辑
| |---wordfilter //敏感词过滤器
|---utils //工具包
|---resources //资源
|---admin //后台web资源
|---app //前台web资源
|---static //静态资源
|---wordfilter //敏感词文件
效果图
具体效果请至:项目预览地址
总结
虽然项目不大,但从零到完成也花费了一些精力,总的来说是学到了很多东西。做项目的过程中,更多时候是边学边做的,频繁地试错,翻阅技术文档,慢慢疏通了知识脉络,更深入地了解到技术。而且会遇到各种问题,有时候网上找不到答案,往往需要从问题源头深入源码慢慢找,这个过程中也培养了阅读源码的习惯,提高了自己解决问题的能力。
独立完成了一个项目,技术上的提升不可忽视,但我觉得更重要的是带给自己技术自信心,让虽然目前技术力还是相形见绌,但这种微不足道的成就感正是我持续学习、不断进步的原动力。
共勉!!!