{"repo":"ngcly/music-story","free":true,"listed":false,"github":"https://github.com/ngcly/music-story","clone":"git clone https://github.com/ngcly/music-story.git","description":"一个用来听歌看书的网站","language":"HTML","stars":65,"topics":["redis","jpa","gradle","rabbitmq","thymeleaf"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"MusicStory (音书) 一个结合了高品质音乐播放与优雅文字创作的文艺社区网站。 --- 🛠️ 技术选型与基础架构 后端核心 ：Spring Boot 3.x / 4.0 全家桶，基于 Java 21 运行环境。 构建工具 ：Gradle 构建，使用模块化、层次化架构设计。 数据存储 ：MySQL / H2 嵌入式数据库。 连接池与监控 ：阿里 Druid 连接池（集成 Jakarta EE / Spring Boot 3 Starter）。 数据缓存 ：Redis 缓存体系。 异步消息 ：RabbitMQ 消息队列（处理延时通知与异步任务）。 即时推送 ：WebSocket (SockJS + STOMP) 实时消息。 全文检索 ：Elasticsearch 搜索引擎。 对象存储 ：抽象的标准 S3 协议存储组件（兼容 Aliyun OSS, MinIO 与 AWS S3）。 并发模型 ：全面对齐 JVM 虚拟线程 (Virtual Threads) ，彻底摒弃传统重度平台线程池。 前端客户端 ：Vite 6 + Vue 3 (Composition API) + Pinia + Vue Router + Element Plus 的单页应用（SPA）。 --- 📂 项目模块结构 项目采用现代微核与依赖分层设计，模块划分清晰对齐： --- 🚀 启动与部署准备 项目已添加 spring-boot-docker-compose 原生支持。启动主类时，Docker Compose 会自动拉取并启动 Redis、RabbitMQ、Elasticsearch 等底层容器。 1. RabbitMQ 延时队列插件安装 容器启动后，需要启用 RabbitMQ 的延时队列插件： 1. 下载 rabbitmq delayed message exchange 插件 (版本需与 RabbitMQ 匹配)，下载地址：RabbitMQ Community Plugins。 2. 将下载的插件拷贝进容器： 3. 进入容器启用插件并重启： 2. 数据库初始化 项目包含 data.sql 文件，启动 MySQL 容器后导入该 SQL 文件即可完成初始数据的填充。 --- 🔧 已修复的重大技术问题与重构 在最新版本中，我们对以下历史遗留问题和痛点进行了彻底修复与重构： Jasypt 配置文件解密修复 (Step 1) ：升级到 4.0.4 原生适配 Spring Boot 3.5+ / 4.x，解决启动加解密失效报错。 Druid 监控页与连接池恢复 (Step 2) ：引入 druid-spring-boot-3-starter ，移除老旧包引用并补充 Servlet Filter 过滤器，完美激活 /druid/index.html 控制台。 标准 S3 存储协议抽象重构 (Step 3) ：剔除强绑定阿里云 OSS 的底层代码，通过标准 AmazonS3 客户端与 StorageService 接口进行完全解耦。控制器层全面转为构造器依赖注入。 虚拟线程对齐一致性 (Step 4) ：废除 AsyncPoolConfig.java 中硬件资源开销巨大的物理线程池，全量路由至 SimpleAsyncTaskExecutor 虚拟线程执行器。 前端视觉深度打磨 ： 首页美化 ：轮播图升级为 3D 卡片层叠滑块；公告栏采用半透明毛玻璃材质并加入小喇叭振动微动效；文章列表卡片化并带有平滑 hover 位移。 精选页重构 ：采用情景交融的全屏微动壁画背景（Ken Bu","default_branch":null,"files":null,"tree":[],"storefront":"/r/ngcly","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ngcly/music-story/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}