第 1 课 课程导论 + 项目全景
本文最后更新于11 天前,其中的信息可能已经过时,如有错误请发送邮件到kirasu@qq.com

第 1 课 课程导论 + 项目全景

本课是 30 节课程的起点:先看清「我们要学的是一个什么东西、由哪些部分组成、用到了哪些技术、怎么跑起来」。不写代码,但要建立对整个项目的整体认知。


本课学习目标

完成本课后,你将能够:

  1. 说清 novel-plus 是什么、有哪几个子系统,各自职责与端口
  2. 理解多模块工程的组织方式(父工程 + 4 个模块)
  3. 按层归类整个项目的技术栈,并知道每项技术用在哪
  4. 把项目跑起来,访问到前台门户和管理后台

一、知识点详解

1.1 项目定位:我们学的到底是什么

novel-plus 是一个多端(PC / WAP)小说阅读与创作平台(原创文学 CMS,Content Management System),不是单机小游戏。它包含小说推荐、作品检索、小说排行、小说阅读、评论、会员中心、作家创作、AI 写作、会员充值订阅、爬虫采集、实时统计报表等完整功能。

  • 当前版本:5.3.3
  • 技术底座:Spring Boot 3.4.0 + Java 21
  • 项目地址(官方):GitHub / Gitee 搜索 201206030/novel-plus,另有学习版 novel 和微服务版 novel-cloud

为什么这个项目值得学? 它是一个把主流后端技术真实组合起来的完整业务系统:有清晰的分层、真实的缓存 / 分表 / 支付 / 爬虫 / AI 场景。吃透它 ≈ 看懂一个中大型 Java 后端项目的通用骨架,之后学其他项目能「举一反三」。

1.2 四个模块:整个项目怎么拆分

整个工程是一个 Maven 多模块项目(根目录 pom.xml 通过 <modules> 聚合),分 4 个模块:

模块 职责 入口类 默认端口
novel-common 通用模块:实体、Mapper、缓存、工具、全局增强 无入口(被下面三个依赖) —
novel-front 前台门户 + 作家后台:书城、阅读、评论、会员、作者创作、AI 写作、充值 novel-front/src/main/java/com/java2nb/novel/FrontNovelApplication.java 8083
novel-crawl 爬虫管理系统:按规则自动采集、更新小说数据 novel-crawl/src/main/java/com/java2nb/novel/CrawlNovelApplication.java 8081
novel-admin 平台管理后台:小说/用户/支付管理、系统 RBAC 权限 novel-admin/src/main/java/com/java2nb/AdminApplication.java 80

记忆点:前台看书、作家写字、爬虫搬书、后台管书,通用模块打底。

三个启动类都长得像,但注解有差异,这正是理解它们角色的钥匙。 以 FrontNovelApplication.java 为例:

@SpringBootApplication          // 声明这是 Spring Boot 应用(自动装配)
@EnableTransactionManagement    // 开启声明式事务
@EnableScheduling               // 开启定时任务
@EnableCaching                  // 开启缓存(配合 Redis)
@ServletComponentScan           // 扫描 Servlet 组件(过滤器等)
@MapperScan(basePackages = {"com.java2nb.novel.mapper"})  // 扫描 MyBatis Mapper
public class FrontNovelApplication {
    public static void main(String[] args) {
        SpringApplication.run(FrontNovelApplication.class);
    }
}

三个入口类对比:

对比项 front crawl admin
@EnableTransactionManagement ✅ — ✅
@EnableCaching ✅ ✅ ✅
@MapperScan 包名 com.java2nb.novel.mapper com.java2nb.novel.mapper com.java2nb.*.dao
是否排除 Spring Security 否 否(crawl 自带 SecurityConfiguration) ✅ 排除 SecurityAutoConfiguration(改用 Shiro)
启动时行为 打印访问地址 打印访问地址 先创建连接池、打印数据库信息

两个值得注意的细节:

  • admin 为什么排除 Spring Security? 因为管理后台的鉴权用的是 Apache Shiro(novel-admin/pom.xml 引入 shiro-core/shiro-spring),不是 Spring Security,所以要把 Spring Security 的自动装配关掉,避免冲突。
  • Mapper 扫描包名不同:front/crawl 扫描 com.java2nb.novel.mapper,admin 扫描 com.java2nb.*.dao。说明管理后台的持久层类放在 dao 包下(这也是后续读代码时找位置的关键线索)。

1.3 技术栈全景:项目用了哪些东西

按「从底层到上层」分 8 类,一目了然:

分类 技术 用在哪
构建与语言 Java 21、Maven、Lombok 全项目(Lombok 简化实体)
数据库 MySQL 8.0 主库,doc/sql/novel_plus.sql 初始化
持久层 MyBatis、MyBatis Dynamic SQL、PageHelper、MyBatis Generator 全项目(动态 SQL + 分页插件)
分库分表 ShardingSphere-JDBC 5.5.1 admin 数据源,book_content 按 index_id % 10 分 10 表
框架 Spring Boot 3.4 全项目
安全认证 JJWT(前台登录)、Spring Security(crawl)、Apache Shiro(admin) 三个模块各司其职
缓存 Redis、Redisson 前台登录态 + 热点数据缓存
前端 Thymeleaf、Layui 模板渲染 + 管理端 UI
业务扩展 Spring AI 1.0(写作/封面)、alipay-sdk-java(充值)、阿里云 OSS(图片) 均在 novel-front
运维 Docker、GitHub Actions CI 部署与发布

这些技术在后续课程中会逐一展开:MyBatis/分页/分表(L6-L10)、Spring Boot(L11-L15)、JWT/Spring Security/Shiro(L16-L18)、业务实战(L19-L24)、Spring AI/异步(L25-L26)。

1.4 怎么跑起来:前置环境与启动顺序

前置要求:

  • JDK 21(项目要求 java.version=21,低于此版本无法编译)
  • Maven(3.x)+ 本地仓库能访问阿里镜像(pom.xml 里已配好 aliyun 仓库)
  • MySQL 8.x、Redis(启动前台登录态/缓存需要)

初始化数据库:

  1. 用 doc/sql/novel_plus.sql 建库建表(主脚本,库名 novel_plus)
  2. 若需要最新结构,按文件名时间顺序执行 doc/sql/ 下的增量脚本(如 20250712.sql)

启动顺序(建议):

  1. 启动 MySQL、Redis
  2. 依次启动 novel-front(8083)、novel-crawl(8081)、novel-admin(80)

访问入口:

  • 前台门户:http://localhost:8083
  • 爬虫管理:http://localhost:8081(账号 admin / admin,见 crawl 的 application.yml)
  • 管理后台:http://localhost:80

各模块端口在各自 application.yml 的 server.port 配置;novel-front 默认激活 dev 环境并引入 website,alipay,oss 三个 profile(application.yml 第 4-7 行)。

1.5 学习文档索引:已有资源别浪费

文档 类型 什么时候用
doc/novel-plus-tutorial.md 源码级教程(11 章) 环境搭建、数据库、模块详解、核心流程
doc/novel-plus-source-study.md 源码学习笔记(阶段 0-3) 深入读源码、二次开发
doc/tech-stack-learning-roadmap.md 技术栈学习路线图 补某项技术的基础
Tutorial/学习建议-二次开发路线.md 学习路径与练习 总体节奏、动手练习 P0-P5
Tutorial/课程大纲-30节课.md 课程大纲 每课主题与参考章节
doc/AI功能无反应诊断.md 排障记录 AI 功能出问题时的排查参考

1.6 安全提醒

novel-front 的 application.yml 里直接写着真实可用的 API Key(如 Spring AI 调用的 deepseek key)。学习时注意:

  • 不要把这个仓库推到公开仓库,或推之前务必把 key 清掉 / 换成你自己的
  • 即便只在本地学,也建议换成自己的 key,避免被盗用产生费用
  • 学配置时看「key 配在哪里、什么格式」,不要传播原文

二、动手练习(含验证标准)

建议跟着做,做完一项勾一项。这是检验「看懂了」最直接的方式。

练习 1:把项目跑起来

  • 目标:完成数据库初始化和三模块启动,能访问到前台和管理后台。
  • 步骤:安装 JDK21/Maven/MySQL/Redis → 用 doc/sql/novel_plus.sql 建库 → 依次启动三个模块。
  • 验证标准:浏览器访问 http://localhost:8083 能看到前台首页数据;访问 http://localhost:80 能打开管理后台登录页;三个模块控制台都出现「项目启动啦」日志。

练习 2:结构认知

  • 目标:在 IDEA 里展开四个模块,形成「哪里是什么」的直觉。
  • 步骤:用 IDE 打开根目录 pom.xml(会作为 Maven 工程加载),展开 novel-common / novel-front / novel-crawl / novel-admin,每个模块找 2-3 个核心类(如 front 下的 PageController、admin 下的 sys 目录)。
  • 验证标准:能不看文档说出每个模块的职责,并指出其中 1-2 个核心类的包路径。

练习 3:配置观察

  • 目标:自己找到端口、环境、数据源配置,建立「配置在哪」的认知。
  • 步骤:打开 novel-front/src/main/resources/application.yml,找到 server.port 与 spring.profiles.active;打开 novel-admin/src/main/resources/application.yml,找到数据源(ShardingSphereDriver)指向的文件。
  • 验证标准:能回答「front 端口是多少、激活了什么环境」「admin 的数据源配置文件路径是什么」。

三、本课小结

novel-plus 是一个 Spring Boot 3.4 / Java 21 的多模块小说 CMS:前台看书(front,8083)、作家写字(front)、爬虫搬书(crawl,8081)、后台管书(admin,80),通用模块(common)打底。它把 MyBatis、分页、分表、JWT/Shiro、Redis、Spring AI、支付宝、Docker 等主流技术真实地组合在一起,是一个极佳的大型后端工程学习范本。下一课起,我们从 Java 21 与工程工具开始打基础,逐步深入到数据库、框架、业务与部署。


四、自测题

  1. 【选择】novel-front 的默认端口是?(A. 80 B. 8081 C. 8083 D. 8080)
  2. 【选择】哪个模块排除了 Spring Security 自动装配、改用 Shiro 鉴权?(A. front B. crawl C. admin D. common)
  3. 【选择】front / crawl 的 @MapperScan 扫描哪个包?(A. com.java2nb.*.dao B. com.java2nb.novel.mapper C. com.java2nb.novel.entity D. com.java2nb)
  4. 【简答】分别用一句话说出四个模块各负责什么。
  5. 【简答】为什么启动前必须先初始化数据库?admin 模块的数据源指向哪个配置文件?

答案在文内对应章节:端口见 1.2 表、Shiro 见 1.2 细节说明、MapperScan 见 1.2 对比表、模块职责见 1.2 表、数据源见练习 3。


五、参考资源

  • 本课程大纲:Tutorial/课程大纲-30节课.md → 第 1 课
  • 教程:doc/novel-plus-tutorial.md → 第 1、2 章(项目概述、环境搭建与运行)
  • 源码笔记:doc/novel-plus-source-study.md → 阶段 0(项目认知与跑通)
  • 技术栈路线:doc/tech-stack-learning-roadmap.md → 第 2.1-2.3 节(Java/Maven/Lombok)
  • 项目首页:根目录 README.md
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇