1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景:
现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴,资金又比较紧张,是那么的不友好。作为程序员的我,也是喜欢听着歌,敲着代码。
最近就想做一个音乐播放器的软件,在内网中使用。

注意:
本项目只实现播放音乐和后台管理系统。
不分享任何音乐歌曲资源。

本系统使用的技术和实现逻辑不是特别的难。
特别适合刚学编程的小伙伴学习参考。
如果有小伙伴有兴趣可以订阅此专栏,后续会持续更新直到音乐播放器这个软件完成。
我会尽可能详细的以文字的形式分享出来 从0到1 写出来一个音乐播放器项目。

使用到的重点技术:
后端框架: Spring Boot 2.7.18
数据库依赖:mybatis-plus 3.5.7
文件上传依赖:x-file-storage
数据库迁移依赖:flyway-core

前端:vue + Electron(可以打包成exe客户端)

数据库:mysql8.0

因核心分享 的是java编程。后续文章中 基本分享的都是java语言的代码。
对于前端的代码,在文章中就不分享了。只会分享一下页面效果。
当然项目完结后,我会把前后端项目源码打包好放到最后一篇文章中。

实现需求:
管理后台:
账号管理、专辑管理、歌手管理、歌曲管理

客户端:
首页、歌曲搜索、专辑列表、歌手列表、音乐播放、我喜欢的、个人中心、基础设置

大概核心功能会实现以上功能

后端框架搭建:
1. java环境安装 可参考下面2篇博客
java环境:
https://blog.csdn.net/Drug_/article/details/120211153
maven安装:
https://blog.csdn.net/Drug_/article/details/120693846

2. 编辑器的安装和配置(IDEA编辑器) 参考下面两篇博客
https://blog.csdn.net/Drug_/article/details/119558729
https://blog.csdn.net/Drug_/article/details/119529864

3. mysql8 数据库的安装
我这里是直接安装的windows 的集成工具:phpStudy
对于 phpStudy 这个工具 写PHP的程序员肯定不陌生。
为什么要安装这个呢,因为他在windows 下 编程开发需要一些软件 他很方便。
你把这个软件安装后 他里面可以安装 mysql redis 等 我们开发需要的软件,这样你就不需要一一 再去各大官网上下载安装了 所以我在做java 开发的时候 也会使用别的语言的软件。方便我们的开发
在这里插入图片描述
4. mysql 管理工具 安装:Navicat
对于这个工具,我就不多解释了,玩过数据库的小伙伴,应该基本上都用过这个软件。自行百度即可。

5. spring boot 框架搭建 打开IDEA编辑器开始创建项目
第一步:
在这里插入图片描述第二步: 这些 大家自主填写即可。 java版本选 java8
在这里插入图片描述
在这里插入图片描述
创建即可。
先实现 让我们 springboot 正常启动
第一步:
我们来把我们所需要的依赖导入到我们项目里即可。
也就是 修改 我们项目下的 pom.xml文件
在这里插入图片描述

内容如下:我已经给大家整理好了。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jsonl</groupId>
    <artifactId>music-java</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>json-base</name>
    <description>json-base</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.7.18</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
<!--        mybatis + 代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
<!--        druid  mysql连接驱动更换-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.23</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- redis依赖commons-pool 这个依赖一定要添加 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.8.1</version>
        </dependency>
<!--        优雅的使用api-->
        <dependency>
            <groupId>com.dtflys.forest</groupId>
            <artifactId>forest-spring-boot-starter</artifactId>
            <version>1.5.36</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.49</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- Flyway 数据库迁移 依赖 他会根据spring boot版本 默认下载兼容依赖 不需要写版本号  -->
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
        </dependency>


        <dependency>
            <groupId>org.dromara.x-file-storage</groupId>
            <artifactId>x-file-storage-spring</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.16.1</version>
        </dependency>
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.6.137</version>
        </dependency>


    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

第二步: 增加配置文件信息
这里我没有用 yml 文件 用的是 properties 这种类型的配置文件
内容如下:

server.port=18023
spring.application.name=link-music
spring.profiles.active=dev
#请求限制
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=500MB
#===========================数据库==========================================
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/link_music?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
# 以下 Druid的配置 虽然编辑器没提示 但是经过测试 是生效的
# Druid  数据源初始化时创建的连接数
spring.datasource.druid.initial-size=10
#数据源允许的最大活跃连接数
spring.datasource.druid.max-active=100
#数据源维护的最小空闲连接数
spring.datasource.druid.min-idle=3
#当没有可用连接时,获取连接的最大等待时间
spring.datasource.druid.max-wait=5000
#是否在连接池中缓存预编译的语句
spring.datasource.druid.pool-prepared-statements=true
#每个连接可以缓存的最大预编译语句数
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=100
# 配置 AOP 监控的目标模式
#spring.datasource.druid.aop-patterns=com.jsonl.*
#不用这个
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
#============================redis=========================================
#spring.redis.host=127.0.0.1
#spring.redis.port=6379
#spring.redis.database=32
#spring.redis.password=123456
# Redis Lettuce 客户端配置
#spring.redis.lettuce.pool.max-active=500
#spring.redis.lettuce.pool.max-wait=10
#spring.redis.lettuce.pool.max-idle=8
#spring.redis.lettuce.pool.min-idle=2
#============================flyway=========================================
#是否启用flyway
spring.flyway.enabled=true
# 禁止清理数据库表
# clean 操作是 Flyway 的一个功能,可以清空数据库中的所有对象(比如表、视图、存储过程等),
#以便进行全新的数据库迁移。在开发和测试阶段,这可能是有用的,因为它可以确保每次都从一个干净的数据库状态开始运行。
#但在生产环境中,执行 clean 操作可能会导致数据丢失,因此通常需要禁用它
spring.flyway.clean-disabled=true
# 如果数据库不是空表,需要设置成 true,当迁移数据库存在但没有元数据的表时,自动执行基准迁移
#当数据库中不存在迁移历史记录表时,Flyway 会自动创建该表,并将当前已经存在的数据库对象标记为已迁移状态。
#当数据库中存在迁移历史记录表,但版本号低于最新的迁移脚本版本时,
#Flyway 也会自动创建一个基线版本,从而将现有的数据库对象标记为已迁移状态,并开始应用最新的迁移脚本。
#这样做的目的是确保在已有数据库上使用 Flyway 进行迁移时,无论数据库是否已经有迁移历史记录,
#都能够正确地进行迁移操作。这在初始化应用程序时特别有用,因为它允许你在部署应用程序到新环境时,
# 自动初始化数据库并应用最新的迁移脚本。
spring.flyway.baseline-on-migrate=true
spring.flyway.encoding=UTF-8
# 迁移sql脚本文件存放路径,默认db/migration
# 如果配置完这个路径,也手动创建了这个目录  启动服务 一直报错 这个目录找不到
# 可在目录里创建一个 .keep的空文本文件,以确保该目录在应用程序启动期间被编译并可用,以避免错误。
spring.flyway.locations=classpath:db/migration
# 迁移sql脚本文件名称的前缀,默认V 前缀标识,默认值 V 表示 Versioned, R 表示 Repeatable, U 表示 Undo
# Flyway 将 SQL 文件分为 Versioned 、Repeatable 和 Undo 三种:
# Versioned 用于版本升级, 每个版本有唯一的版本号并只能执行一次.
# Repeatable 可重复执行, 当 Flyway检测到 Repeatable 类型的 SQL 脚本的 checksum 有变动,
# Flyway 就会重新应用该脚本. 它并不用于版本更新, 这类的 migration 总是在 Versioned 执行之后才被执行。
# Undo 用于撤销具有相同版本的版本化迁移带来的影响。但是该回滚过于粗暴,过于机械化,一般不推荐使用。
#  一般建议使用 Versioned 模式来解决
spring.flyway.sql-migration-prefix=V
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
spring.flyway.sql-migration-separator=__
# 迁移sql脚本文件名称的后缀
spring.flyway.sql-migration-suffixes=.sql
# 迁移时是否进行校验,默认true
spring.flyway.validate-on-migrate=true
# 可把这个参数设置 为true 是否可以无序执行  他默认是false 严格按照 顺序执行
spring.flyway.out-of-order=true
#开始执行基准迁移时对现有的schema的版本打标签,默认值为1
#spring.flyway.baseline-version=1
#===========================优雅的使用api依赖配置==========================================
# 连接池最大连接数
forest.max-connections=200
# 连接超时时间,单位为毫秒
forest.connect-timeout=5000
# 数据读取超时时间,单位为毫秒
forest.read-timeout=5000
# api依赖里的 关闭所有日志
forest.log-enabled=false
forest.log-request=false
forest.log-response-status=false
forest.log-response-content=false

第三步:创建一个启动类文件 我们启动项目 看看是否能正常启动。如果可以正常启动,那我们前期的准备工作就算完成。
在这里插入图片描述

好了。今天就分享到这里,后续开发会支持更新。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950254.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值&#xff0c;并显示在 LCD1602 上&#xff1b; 2. 按键修改阈值&#xff0c;并显示在 LCD1602 上&#xff1b; 3. 烟雾值超过阈值时&#xff0c;蜂鸣器长响&#xff0c;风扇打开&#xff1b;烟雾值小于阈值时&#xff0c;蜂鸣器不响…

【Linux】记录一下考RHCE的学习过程(七)

年底了&#xff0c;公司接的北京地铁轨道交通的项目做不完了&#xff0c;一百多列地铁的设备都得调&#xff0c;派我出差了几周&#xff0c;这几天才回来&#xff0c;出差累死了实在是没办法更新。&#xff08;YOASOBI的二开票还没抢到ToT&#xff0c;哭死&#xff0c;看看回滚…

[读书日志]从零开始学习Chisel 第六篇:Scala面向对象编程——特质(敏捷硬件开发语言Chisel与数字系统设计)

3.4特质 3.4.1什么是特质 特质使用trait开头&#xff0c;它与单例对象很像&#xff0c;两者都不能有输入参数&#xff0c;但单例对象是具体的&#xff0c;特质是抽象的。两者都不能用new实例化&#xff0c;类&#xff0c;单例对象&#xff0c;特质三者内部都可以包含字段和方…

VuePress2配置unocss的闭坑指南

文章目录 1. 安装依赖&#xff1a;准备魔法材料2. 检查依赖版本一定要一致&#xff1a;确保魔法配方准确无误3. 新建uno.config.js&#xff1a;编写咒语书4. 配置config.js和client.js&#xff1a;完成仪式 1. 安装依赖&#xff1a;准备魔法材料 在开始我们的前端魔法之前&…

游戏引擎学习第77天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾昨天的 bug 今天我们继续开发进度&#xff0c;进行调试昨天代码的问题&#xff0c;主要是关于如何跟踪玩家和敌人在世界中的高度位置。虽然我们做的是一款 2D 游戏&#xff0c;但我们希望能够处理多层的房间&#xff0c;玩家…

uniapp结合movable-area与movable-view实现拖拽功能2

前言 上篇我们写了&#xff0c;固定高度的拖拽&#xff0c;这篇我们将进行不固定高度的拖拽模块编写完成。 开始 一、初始化 我们在list数组里面增加一个data的动态数组&#xff0c;这样可以动态改变元素的高度。 当前元素y 上一个元素的高度 <template><view s…

ubuntu为Docker配置代理

终端代理 我们平常在ubuntu终端中使用curl或git命令时&#xff0c;往往会很慢。 所以&#xff0c;首先需要给ubuntu终端环境添加代理。 查看自身那个软件的端口号&#xff0c;我这里是7890。 sudo gedit ~/.bashrcexport http_proxyhttp://localhost:7890 export https_pr…

【Uniapp-Vue3】v-if条件渲染及v-show的选择对比

如果我们想让元素根据响应式变量的值进行显示或隐藏可以使用v-if或v-show 一、v-show 另一种控制显示的方法就是使用v-show&#xff0c;使用方法和v-if一样&#xff0c;为true显示&#xff0c;为false则不显示。 二、v-if v-if除了可以像v-show一样单独使用外&#xff0c;还…

wujie无界微前端框架初使用

先说一下项目需求&#xff1a;将单独的四套系统的登录操作统一放在一个入口页面进行登录&#xff0c;所有系统都使用的是vue3&#xff0c;&#xff08;不要问我为啥会这样设计&#xff0c;产品说的客户要求&#xff09; 1.主系统下载wujie 我全套都是vue3&#xff0c;所以直接…

C语言 数组编程练习

1.将数组A的内容和数组B中的内容进行交换。&#xff08;数组一样大&#xff09; 2.创建一个整形数组&#xff0c;完成对数组的操作 实现函数Init()初始化数组全为0 实现print()打印数组的每个元素 实现reverse()函数完成数组元素的逆置 //2.创建一个整形数组&#xff0c;完…

【three.js】模型-几何体Geometry,材质Material

模型 在现实开发中&#xff0c;有时除了需要用代码创建模型之外&#xff0c;多数场景需要加载设计师提供的使用设计软件导出的模型。此时就需要使用模型加载器去加载模型&#xff0c;不同格式的模型需要引入对应的模型加载器&#xff0c;虽然加载器不同&#xff0c;但是使用方式…

MySQL和Hive中的行转列、列转行

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 MySQL1.行转列2.列转行 Hive1.行转列2.列转行(1)侧窗(2)union MySQL 1.行转列 把多行转成列。直接group&#xff0c;sum(if()) 2.列转行 Hive 1.行转列 select name,sum(if(kmshuxu…

unity学习8:unity的基础操作 和对应shortcut

目录 1 unity的基础操作的工具&#xff0c;就在scene边上 1.1 对应shortcut快捷键 2 物体的重置/ 坐标归到0附近 3 F&#xff1a;快速找到当前gameobject 4 Q&#xff1a;小手和眼睛&#xff0c;在场景中移动 5 W&#xff1a;十字箭头&#xff0c;移动gameobject 6 …

对话|全年HUD前装将超330万台,疆程技术瞄准人机交互“第一屏”

2024年&#xff0c;在高阶智驾进入快速上车的同时&#xff0c;座舱人机交互也在迎来新的增长点。Chat GPT、AR-HUD、车载投影等新配置都在带来新增量机会。 高工智能汽车研究院监测数据显示&#xff0c;2024年1-10月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用…

Openwrt @ rk3568平台 固件编译实践(二)- ledeWRT版本

目录 ledeWRT介绍固件编译下载代码修改feed源更新并安装编译第三方软件包制作用于eMMC烧写的rootfs基于lede发行版验证烧写rk3568.img, LEDE wrt启动成功refhttps://blog.csdn.net/zc21463071/article/details/106751361介绍rk3568平台下, lede 大神版 openwrt固件的下载、编译…

【Unity3D】Text文本文字掉落效果

相关技术&#xff1a;Text、TextMesh、Rigidbody&#xff08;刚体&#xff09;、BoxCollider&#xff08;碰撞体&#xff09;、TextGenerator、文本网格、文字网格 原理&#xff1a;使用UGUI Text获取其文字的每个字符网格坐标&#xff0c;转世界坐标生成对应的3D文本(TextMesh…

Spring Boot教程之四十九:Spring Boot – MongoRepository 示例

Spring Boot – MongoRepository 示例 Spring Boot 建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员的最爱。Spring Boot 是…

el-table-fixed滚动条被遮挡导致滚动条无法拖动

/* 设置默认高度-滚动条高度 */ .el-table__fixed { height: calc(100% - 16px) !important; } .el-table__fixed {height: calc(100% - 16px) !important; } .el-table__fixed:before {height: 0px; }

探索大型语言模型新架构:从 MoE 到 MoA

探索大型语言模型新架构&#xff1a;从 MoE 到 MoA 当前&#xff0c;商业科技公司纷纷投身于一场激烈的竞赛&#xff0c;不断扩大语言模型的规模&#xff0c;并为其注入海量的高质量数据&#xff0c;试图逐步提升模型的准确性。然而&#xff0c;这种看似顺理成章的发展路径逐渐…

【通识安全】煤气中毒急救的处置

1.煤气中毒的主要症状与体征一氧化碳中毒&#xff0c;其中毒症状一般分为轻、中、重三种。 (1)轻度&#xff1a;仅有头晕、头痛、眼花、心慌、胸闷、恶心等症状。如迅速打开门窗&#xff0c;或将病人移出中毒环境&#xff0c;使之吸入新鲜空气和休息&#xff0c;给些热饮料&am…