小说精品屋

项目介绍

开源项目地址:https://github.com/201206030/novel 学习笔记地址:https://docs.xxyopen.com/

novel 是一套基于时下最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离学习型小说项目,配备保姆级教程手把手教你从零开始开发上线一套生产级别的 Java 系统,由小说门户系统、作家后台管理系统、平台后台管理系统等多个子系统构成。包括小说推荐、作品检索、小说排行榜、小说阅读、小说评论、会员中心、作家专区、充值订阅、新闻发布等功能。

开发环境及技术栈

开发环境

MySQL 8.0Redis 7.0Elasticsearch 8.2.0(可选)RabbitMQ 3.10.2(可选)XXL-JOB 2.3.1(可选)JDK 17Maven 3.8IntelliJ IDEA 2021.3(可选)Node 16.14

注:Elasticsearch、RabbitMQ 和 XXL-JOB 默认关闭,可通过 application.yml 配置文件中相应的enable配置属性开启。

技术选型

后端技术选型

技术版本说明官网学习Spring Boot3.0.0容器 + MVC 框架进入进入MyBatis3.5.9ORM 框架进入进入MyBatis-Plus3.5.3MyBatis 增强工具进入进入JJWT0.11.5JWT 登录支持进入-Lombok1.18.24简化对象封装工具进入进入Caffeine3.1.0本地缓存支持进入进入Redis7.0分布式缓存支持进入进入Redisson3.17.4分布式锁实现进入进入MySQL8.0数据库服务进入进入ShardingSphere-JDBC5.1.1数据库分库分表支持进入进入Elasticsearch8.2.0搜索引擎服务进入进入RabbitMQ3.10.2开源消息中间件进入进入XXL-JOB2.3.1分布式任务调度平台进入进入Sentinel1.8.4流量控制组件进入进入Springdoc-openapi2.0.0Swagger 3 接口文档自动生成进入进入Spring Boot Admin3.0.0-M1应用管理和监控进入进入Undertow2.2.17.FinalJava 开发的高性能 Web 服务器进入进入Docker-应用容器引擎进入-Jenkins-自动化部署工具进入-Sonarqube-代码质量控制进入-

注:更多热门新技术待集成。

前端技术选型

技术版本说明官网学习Vue.js3.2.13渐进式 JavaScript 框架进入进入Vue Router4.0.15Vue.js 的官方路由进入进入axios0.27.2基于 promise 的网络请求库进入进入element-plus2.2.0基于 Vue 3,面向设计师和开发者的组件库进入进入

编码规范

规范方式:严格遵守阿里编码规约。命名统一:简介最大程度上达到了见名知意。分包明确:层级分明可快速定位到代码位置。注释完整:描述性高大量减少了开发人员的代码阅读工作量。工具规范:使用统一jar包避免出现内容冲突。代码整洁:可读性、维护性高。依赖版本:所有依赖均使用当前最新可用版本以便新技术学习。

包结构

io

+- github

+- xxyopen

+- novel

+- NovelApplication.java -- 项目启动类

|

+- core -- 项目核心模块,包括各种工具、配置和常量等

| +- common -- 业务无关的通用模块

| | +- exception -- 通用异常处理

| | +- constant -- 通用常量

| | +- req -- 通用请求数据格式封装,例如分页请求数据

| | +- resp -- 接口响应工具及响应数据格式封装

| | +- util -- 通用工具

| |

| +- annotation -- 自定义注解类

| +- aspect -- Spring AOP 切面

| +- auth -- 用户认证授权相关

| +- config -- 业务相关配置

| +- constant -- 业务相关常量

| +- filter -- 过滤器

| +- interceptor -- 拦截器

| +- json -- JSON 相关的包,包括序列化器和反序列化器

| +- task -- 定时任务

| +- util -- 业务相关工具

| +- wrapper -- 装饰器

|

+- dto -- 数据传输对象,包括对各种 Http 请求和响应数据的封装

| +- req -- Http 请求数据封装

| +- resp -- Http 响应数据封装

|

+- dao -- 数据访问层,与底层 MySQL 进行数据交互

+- manager -- 通用业务处理层,对第三方平台封装、对 Service 层通用能力的下沉以及对多个 DAO 的组合复用

+- service -- 相对具体的业务逻辑服务层

+- controller -- 主要是处理各种 Http 请求,各类基本参数校验,或者不复用的业务简单处理,返回 JSON 数据等

| +- front -- 小说门户相关接口

| +- author -- 作家管理后台相关接口

| +- admin -- 平台管理后台相关接口

| +- app -- app 接口

| +- applet -- 小程序接口

| +- open -- 开放接口,供第三方调用

学习版项目搭建

项目文件下载

数据库搭建

MySql8.0.31

root密码:root

启动MySQL

进入 D:\mysql\mysql-8.0.31-winx64\bin进行操作

命令格式:net start/stop 服务名

#启动 MySQL 服务命令:net start mysql

#停止 MySQL 服务命令:net stop mysql

数据库创建与配置

登录root用户:mysql -u root -p

创建数据库:create database novel;

查看数据库:show databases;

解压后端源码doc/sql/novel.sql.zip压缩包,得到数据库结构文件novel_struc.sql和数据库小说数据文件novel_data.sql

使用数据库:use novel

导入novel_struct.sql数据库结构文件:source D:\chenchen\novel\novel\doc\sql\sql\novel_struct.sql

导入novel_data.sql数据库小说数据文件:source D:\chenchen\novel\novel\doc\sql\sql\novel_data.sql

JDK17的安装

位置:D:\jdk-17_windows-x64_bin\jdk-17.0.10

环境变量设置修改:

启动项目

Redis服务

版本:5.0.14.1

位置:D:\Redis

进入文件夹中,鼠标双击edis-server.exe开启redis服务

后端项目

项目jdk为17,命令行没配置好,因此导入IDEA中用maven进行依赖导入和项目管理。

IDEA项目配置

项目jdk版本设置为17

修改src/resources/application.yml配置文件中的数据源配置

spring:

datasource:

url: jdbc:mysql://localhost:3306/novel?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai

username: root

password: root

修改src/resources/application.yml 配置文件中的redis连接配置

spring:

data:

# Redis 配置

redis:

host: 127.0.0.1

port: 6379

# password: 123456

启动项目

redis启动的前提下启动,爆红后续抽空解决,接口文档地址:http://192.168.12.194:8888/swagger-ui/index.html#/(根据实际情况来)

前端项目

命令行进入前端项目所在文件夹,使用yarn install安装项目依赖。

此处出现bug两个:

yarn下载超时的bug: 解决方法: # 修改代理地址

npm config set registry https://registry.npm.taobao.org

npm config set disturl https://npm.taobao.org/dist

# 更换完之后继续运行

yarn install --check-files --cache-folder .ycache && rm -rf .ycache

node版本过高与yarn版本不兼容的bug: error @achrinza/node-ipc@9.2.2: The engine “node” is incompatible with this module. Expected version 解决方法: # 兼容命令

yarn config set ignore-engines true

使用yarn serve启动项目,前端项目地址:http://localhost:1024/

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: